Comment sélectionner des résultats SQL basés sur plusieurs tables
Je dois sélectionner les résultats d'une table en fonction de certaines valeurs correspondantes dans quelques autres tables. J'ai les tableaux suivants:
person: id, firstname, lastname
team: id, teamname
player: id, person_id(FK), team_id(FK)
coach: id, person_id(FK), team_id(FK)
Je dois retourner tous les noms des entraîneurs et des joueurs pour chaque équipe. J'ai seulement utilisé des jointures intérieures, et il ne semble pas que je puisse les utiliser ici, donc une idée de comment faire cela?
24
demandé sur
Chandu
2011-07-05 22:59:22
2 réponses
Cela vous donnera l'entraîneur:
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
Et cela vous donnera les joueurs:
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
Donc, la réponse simple et non élégante est de tout mélanger avec UNION
.
31
répondu
Chris Cunningham
2015-01-20 15:15:10
Il suffit D'utiliser un ou dans la jointure à L'équipe
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
Ou si vous perfer si et votre base de données a COALESCE
LEFT JOIN team t
ON COALESCE(pl.team_id,c.team_id) = t.id
3
répondu
Conrad Frix
2011-07-05 19:21:39