У меня возникли проблемы с объединением трех таблиц. У меня есть эти таблицы:MySQL внешний соединяет три таблицы
table teams:
id_team | team_name
--------+-----------
1 | Alpha
2 | Beta
3 | Charlie
--------+----------
table persons
id_person | name
----------+-------
1 | Homer
2 | Ned
3 | Moe
----------+--------
table teams_has_persons
id_team | id_person | is_leader
--------+-----------+-----------
1 | 1 | 0
1 | 2 | 1
2 | 3 | 0
--------+-----------+-----------
Команда может содержать или не содержать лиц. Команда может иметь или не иметь лидера, хотя у нее есть люди. У команды может быть только один лидер.
Я хочу перечислить все команды с их лидерами. Если у команды нет лидера, вместо имени лидера должно отображаться нуль (или что-то еще). Если команда отсутствует в таблице teams_has_persons, она должна быть показана как команда без лидера.
Желаемый результат:
id_team | team_name | leader
--------+-----------+-----------
1 | alpha | Ned
2 | beta | <null>
3 | charlie | <null>
--------+-----------+-----------
мне удалось построить этот запрос:
SELECT
a.id_team,
a.team_name,
b.id_person,
b.is_leader,
c.name
FROM
teams as a
LEFT OUTER JOIN (teams_has_persons as b INNER JOIN persons as c ON b.id_person = c.id_person) ON (a.id_team = b.id_team)
, который отображает список команд со связанными с ними лицами, но это не то, что я хочу.
http://sqlfiddle.com/#!2/046668/1/0
Спасибо всем за ваше время