Maison >base de données >tutoriel mysql >Comment puis-je joindre des tables sans clés étrangères à l'aide d'une table intermédiaire ?

Comment puis-je joindre des tables sans clés étrangères à l'aide d'une table intermédiaire ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-15 18:10:43862parcourir

How Can I Join Tables Without Foreign Keys Using an Intermediary Table?

Joindre des tables sans relations de clés étrangères directes : un guide pratique

Les bases de données relationnelles nécessitent souvent de joindre des tables pour combiner des données provenant de diverses sources. Bien que les clés étrangères définissent généralement ces relations, ce n'est pas toujours le cas. Ce guide explique comment joindre des tables indirectement à l'aide d'une troisième table intermédiaire.

Le défi

Imaginez trois tables : Forests, Species et Trees. Forests stocke les noms et emplacements des forêts ; Species répertorie les espèces d'arbres et les types de bois ; et Trees détaille les arbres individuels, y compris leurs espèces et la forêt qu'ils habitent.

L'objectif est de rejoindre Forests et Species en fonction des arbres qu'ils partagent. Cependant, il n'existe pas de lien de clé étrangère direct entre Forests et Species. Au lieu de cela, Trees agit comme un pont, contenant des clés étrangères faisant référence à la fois à Forests et à Species.

La solution : l'adhésion indirecte via un intermédiaire

La solution réside dans l'utilisation de la table Trees comme lien intermédiaire. En rejoignant Forests et Species via Trees, nous créons indirectement la relation souhaitée.

Exemple de requête SQL

Cette requête SQL démontre la jointure indirecte :

<code class="language-sql">SELECT Forests.Fo_name, Species.Sp_name, Species.Sp_woodtype
FROM Forests
INNER JOIN Trees ON Forests.Fo_name = Trees.Tr_forest
INNER JOIN Species ON Trees.Tr_species = Species.Sp_name
WHERE Forests.Fo_loc = 'ARTIC'
ORDER BY Forests.Fo_name, Species.Sp_name;</code>

Les étapes de cette requête :

  • INNER JOIN connecte Forests et Trees en utilisant les noms de forêt correspondants.
  • Un autre INNER JOIN relie Trees et Species via des noms d'espèces correspondants.
  • WHERE filtre les résultats sur les forêts de la région « ARTIQUE ».
  • ORDER BY trie la sortie pour plus de lisibilité.

Résumé

Cette méthode joint efficacement les tables sans connexions directes par clé étrangère en utilisant une table partagée comme pont. L'identification des colonnes communes reliant les tables est cruciale pour établir cette relation indirecte, permettant des opérations de jointure complexes même sans les contraintes de clés étrangères traditionnelles.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn