MySQL оставил соединение с тремя таблицами - PullRequest
0 голосов
/ 19 февраля 2012

У меня есть запрос, который требует сложного соединения.У меня есть три таблицы, которые являются своего рода «детьми» друг друга.Верхняя таблица "clan_members".Следующим является «roster_members», который получает идентификатор clan_member.Нижний - "match_players", который получает идентификатор roster_members.Я написал цикл, который проведет меня по всем результатам в таблице 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 голосов
/ 19 февраля 2012
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 s при объединении всех трех таблиц.

0 голосов
/ 19 февраля 2012

Этот запрос даст вам количество совпадений, в которых участвовал член клана с идентификатором 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. Просто облегчает понимание того, как таблицы объединяются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...