Как выбрать результаты SQL на основе нескольких таблиц
Мне нужно выбрать результаты из одной таблицы на основе определенных значений соответствия в нескольких других таблицах. У меня есть следующие таблицы:
person: id, firstname, lastname
team: id, teamname
player: id, person_id(FK), team_id(FK)
coach: id, person_id(FK), team_id(FK)
Мне нужно вернуть всех тренеров и имен игроков для каждой команды. Я только когда-либо использовал внутренние соединения, и мне кажется, что я не могу использовать их здесь, поэтому любая идея, как это сделать?
Ответы
Ответ 1
Это даст вам тренер:
SELECT team.Teamname, person.Firstname, person.Lastname
FROM person
JOIN coach ON person.id = coach.person_id
JOIN team ON coach.team_id = team.id
И это даст вам игроков:
SELECT team.Teamname, person.Firstname, person.Lastname
FROM person
JOIN player ON person.id = player.person_id
JOIN team ON player.team_id = team.id
Таким образом, не элегантный, простой ответ заключается в том, чтобы просто перебросить все это вместе с UNION
.
Ответ 2
Просто используйте OR в соединении с командой
SELECT
P.firstname,
P.lastname,
T.teamname
FROM
person p id
LEFT JOIN player pl
ON p.id = pl.person_id
LEFT JOIN coach c
ON p.id = c.person_id
LEFT JOIN team t
ON pl.team_id = t.id
or.c.team_id = t.id
Или если вы перешлите, если и ваша база данных имеет COALESCE
LEFT JOIN team t
ON COALESCE(pl.team_id,c.team_id) = t.id