Соединение в одну таблицу несколько раз с нулевыми FK - PullRequest
0 голосов
/ 07 июля 2010

В ситуации, когда у меня есть две таблицы:

  • Игры (id, player1Id, player2Id)
  • Игроки (id, пол)

И я хотел бы выбрать все игры и пол игрока, как мне обойти нулевые идентификаторы игрока?

Из этого объяснения , я бы подумал, что ответ будет:

SELECT Games.id, p1.gender, p2.gender
FROM Games JOIN Players p1 on player1Id = p1.id 
JOIN Players p2 on player2Id = p2.id

Однако это не возвращает ни одной игры, в которой player1Id или player2Id имеют значение null. Есть ли способ показать все игры с подключенными игроками , когда это возможно ?

Спасибо.

1 Ответ

5 голосов
/ 07 июля 2010

Вам нужно использовать ЛЕВОЕ СОЕДИНЕНИЕ:

   SELECT g.id, p1.gender, p2.gender
     FROM Games g
LEFT JOIN Players p1 ON p1.id = g.player1Id
LEFT JOIN Players p2 on p2.id = g.player2Id

Вот очень хорошая ссылка , которая наглядно демонстрирует различные соединения

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