我有一个查询需要我认为复杂的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,我不知道它们的顺序是什么。如果有人可以给我写一个查询,我将不胜感激!
答案 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
的#。