Maison >base de données >tutoriel mysql >Comment joindre des tables dépourvues de relations de clé étrangère directe à l'aide d'une table intermédiaire ?
Connexion de tables sans clés étrangères directes : tirer parti d'une table intermédiaire
Joindre des tables dépourvues de relations de clé étrangère directe peut être délicat. La solution ? Une table intermédiaire contenant les clés étrangères des deux tables.
Considérez trois tableaux : Espèce, Forêt et Arbre. La table Tree
est liée à la fois à Species
et Forest
via des clés étrangères, mais Species
et Forest
ne se référencent pas directement.
Requête : joindre des données sur les espèces et les forêts
Pour récupérer les noms de forêts, les noms d'espèces et les types de bois pour les forêts de la région « ARCTIQUE », utilisez cette requête SQL :
<code class="language-sql">SELECT Forest.Fo_name, Species.Sp_name, Species.Sp_woodtype FROM Forest INNER JOIN Tree ON Tree.Tr_forest = Forest.Fo_name INNER JOIN Species ON Tree.Tr_species = Species.Sp_name WHERE Forest.Fo_loc = 'ARCTIC' ORDER BY Forest.Fo_name, Species.Sp_name;</code>
Répartition de la requête
Cette requête joint efficacement les tables :
Forest
et Tree
en utilisant Tree.Tr_forest
(le nom de la forêt dans la table Tree
) et Forest.Fo_name
(le nom de la forêt dans la table Forest
).Tree
et Species
en utilisant Tree.Tr_species
(le nom de l'espèce dans le tableau Tree
) et Species.Sp_name
(le nom de l'espèce dans le tableau Species
).WHERE
filtre les résultats pour afficher uniquement les forêts situées dans « ARCTIQUE ».ORDER BY
trie les résultats par nom de forêt puis par nom d'espèce.Cette méthode utilise efficacement la table Tree
comme pont pour connecter Species
et Forest
, permettant la récupération des informations souhaitées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!