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
Libérer: 2025-01-15 18:10:43
original
860 Les gens l'ont consulté

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal