MySQL左连接三个表

时间:2012-02-19 06:22:14

标签: mysql join

我有一个查询需要我认为复杂的JOIN。我有三张桌子,彼此都是“孩子”。顶部表是“clan_members”。接下来是获得clan_member id的“roster_members”。底部是“match_players”,它获取roster_members id。我写了一个循环,它带我完成了clan_members表中的所有结果。我想要做的是找出部落成员玩了多少匹配。这是三个表格的布局:

[clan_members]
     -id
     - member_id
     -join_date

[roster_members]
     - id
     - clan_member_id
     - title

[match_players]
     - id
     - roster_member_id
     - match_id

我以前从未与三个不同的表做过JOIN,我不知道它们的顺序是什么。如果有人可以给我写一个查询,我将不胜感激!

2 个答案:

答案 0 :(得分:0)

此查询将为您提供ID为123的部落成员参与的匹配数量:

select count(*) as match_count
from clan_members c, roster_members r, match_players m
where c.member_id = r.clan_member_id
and r.id = m.roster_member_id
and c.id = 123

在旁注中,最好一致地命名列。例如,具有clan_member_id的所有列应该命名为相同。在clan_members表中,它的被调用的id在roster_members表中被称为clan_member_id。只是让我们更容易理解表格如何连接在一起。

答案 1 :(得分:0)

SELECT DISTINCT match_id 
  FROM clan_members 
    INNER JOIN roster_members 
      ON clan_members.id = roster_members.clan_member_id 
    INNER JOIN match_players 
      ON roster_members.id = match_players.roster_member_id;

将在连接所有三个表时为您提供唯一match_id的#。