Maison > base de données > tutoriel mysql > Comment joindre correctement plusieurs tables en SQL avec des clés étrangères identiques ?

Comment joindre correctement plusieurs tables en SQL avec des clés étrangères identiques ?

DDD
Libérer: 2024-12-26 07:11:12
original
867 Les gens l'ont consulté

How to Correctly Join Multiple Tables in SQL with Identical Foreign Keys?

Joindre plusieurs tables avec la jointure interne SQL

Lorsque vous travaillez avec plusieurs tables dans une base de données, il est souvent nécessaire de les joindre pour récupérer les données associées . Un type de jointure est appelé jointure interne, qui récupère uniquement les lignes correspondant aux critères spécifiés.

Pour joindre plusieurs tables, vous pouvez utiliser la syntaxe suivante :

SELECT *
FROM table1
INNER JOIN table2 ON table1.column1 = table2.column2
INNER JOIN table3 ON table1.column1 = table3.column3
Copier après la connexion

Dans cet exemple , la table table1 est jointe à la table table2 à l'aide de la colonne column1, puis à la table table3 à l'aide de la colonne column1 à nouveau. Cela garantit que seules les lignes qui correspondent aux critères spécifiés dans les trois tables sont renvoyées.

Cependant, vous pouvez rencontrer un problème lorsque vous essayez de joindre plusieurs tables avec les mêmes clés étrangères. Par exemple, supposons que vous ayez le schéma suivant :

table1: id, name
table2: id, table1Id
table3: id, table1Id
Copier après la connexion

Vous pouvez joindre les deux premières tables avec la requête suivante :

SELECT * FROM `table1` INNER JOIN `table2` ON table1.id=table2.table1Id
Copier après la connexion

Maintenant, vous souhaitez joindre la troisième table dans la requête. Vous pouvez essayer ce qui suit :

SELECT * FROM `table1` 
INNER JOIN `table2` 
INNER JOIN table3 
ON table1.id=table2.table1Id=table3.table1Id
Copier après la connexion

Cependant, cette requête ne renverra aucun résultat. La raison en est que la colonne table1.id est comparée à la fois à table2.table1Id et à table3.table1Id. Pour résoudre ce problème, vous devez vous assurer que chaque table est jointe à l'aide de sa propre colonne de clé étrangère unique. La requête correcte serait :

SELECT * 
FROM table1 
INNER JOIN table2
      ON table1.id=table2.table1Id
INNER JOIN table3
      ON table1.id=table3.table1Id
Copier après la connexion

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal