Подтвердить что ты не робот

Как выбрать результаты SQL на основе нескольких таблиц

Мне нужно выбрать результаты из одной таблицы на основе определенных значений соответствия в нескольких других таблицах. У меня есть следующие таблицы:

person: id, firstname, lastname
team: id, teamname
player: id, person_id(FK), team_id(FK)
coach: id, person_id(FK), team_id(FK)

Мне нужно вернуть всех тренеров и имен игроков для каждой команды. Я только когда-либо использовал внутренние соединения, и мне кажется, что я не могу использовать их здесь, поэтому любая идея, как это сделать?

4b9b3361

Ответ 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