mysql - 查询多个表?

标签 mysql sql

我需要创建一个从同一数据库中的三个表读取的查询。

表格:

1. cm_players
player_id
card_no
club_id
surname
name
birthdate

2. cm_clubs
club_id
prefix
name
address
place
stadium_id
telephone
fax
email
web
contact_person
president
secretary
press_officer
status
image

3. cm_registrations
player_id
surname
name
birthdate
birthplace
club_id
date_from
date_to
amateur
status

所以,我需要显示

cm_players.name, 
cm_players.surname, 
cm_clubs.name, 
cm_players.birthdate, 
cm_players.card_no,

将cm_players加入cm_clubs以获取俱乐部名称,并在cm_registrations中检查用户是否处于事件状态......

我尝试过类似的方法:

SELECT cm_players.name, cm_players.surname, cm_clubs.name, cm_players.birthdate, cm_players.card_no, cm_registrations.amateur FROM cm_players 
INNER JOIN cm_clubs on cm_players.club_id = cm_clubs.club_id, cm_registrations 
WHERE cm_players.name LIKE '%$name%' AND cm_players.surname LIKE '%$surname%' AND cm_players.player_id = cm_registrations.player_id AND cm_registrations.amateur = 0 ORDER BY cm_players.player_id ASC

但运气不佳...

有人可以帮我构建这个查询吗?

最佳答案

在这里,我们设置表别名,并通过使用该表的适当别名来获取列值,并且我们在两个俱乐部表上使用内部联接和注册

SELECT cmp.name, cmp.surname, cmc.name, cmp.birthdate, cmp.card_no, cmr.amateur 
  FROM cm_players cmp 
  INNER JOIN cm_clubs cmc on cmp.club_id = cmc.club_id
  INNER JOIN cm_registrations cmr on cmp.player_id = cmr.player_id
  WHERE cmp.name LIKE '%$name%' 
  AND cmp.surname LIKE '%$surname%' 
  AND cmr.amateur = 0 
  ORDER BY cmp.player_id ASC

关于mysql - 查询多个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17762828/

相关文章:

多个表中分配的 ID 出现的 mysql 计数

mysql - 在 Kohana 查询中使用表别名?

mysql - 加快 ORDER BY 日期

java - 为什么在 "=+"子句中使用 "=*"和 "WHERE "?

MySQL 检查不同日期的键值是否存在超过 n 次

mysql - SQL 引擎是否经过优化? (见例子)

PHP 在出于日志记录目的而与 MySQL 建立另一个连接时需要额外的时间

c# - 如何使用前瞻性将 SQL 转换为 LINQ(前导式查询)

MySQL 每月平均 datediff

mysql - 如何使用 laravel 查询获取具有相似兴趣的用户