Comment sélectionner les résultats SQL basée sur plusieurs tables
J'ai besoin de sélectionner les résultats à partir d'une table basée sur certaines valeurs correspondantes dans deux 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)
J'ai besoin de retourner tous les coachs et des noms de joueurs pour chaque équipe. Je n'ai jamais utilisé les jointures internes, et il ne semble pas que je peux utiliser ceux qui sont ici, donc aucune idée de comment faire cela?
- merci pour le modifier. J'ai oublié de mettre les champs dans une balise code ici.
- Je ne suis pas sûr de savoir pourquoi vous avez la configuration de base de données comme ça. Pourquoi ne pas simplement avoir une table pour les joueurs et un pour les entraîneurs à team_id comme le FK sur les deux. De cette façon, vous pouvez simplement exécuter quelque chose comme ("select ? de l'entraîneur c, le joueur p où team_id = ?). Aussi je pense que c'est une bonne pratique d'utiliser le même nom pour la clé étrangère comme le champ correspondant (c'est à dire le champ id dans l'équipe de la table doit être appelé "team_id" tout comme le FK).
Vous devez vous connecter pour publier un commentaire.
Cela vous donnera l'entraîneur:
Et cela vous donnera les joueurs:
Donc, la non-élégant, la réponse simple est de simplement jeter tous ensemble, avec
UNION
.UNION
volontairement, afin de ne pas dupliquer un entraîneur qui est aussi un joueur. Mais ma solution ne parvient pas à un certain degré, si l'entraîneur et des joueurs sont des personnes différentes avec le même nom!UNION ALL
au lieu deUNION
est certainement une bonne correction, je vais quitter ma réponse comment c'est avec cette mise en garde.Il suffit d'utiliser une OU dans l'joindre à l'Équipe de
Ou si vous perfer et si votre base de données a FUSIONNENT