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
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
Vous pouvez joindre les deux premières tables avec la requête suivante :
SELECT * FROM `table1` INNER JOIN `table2` ON table1.id=table2.table1Id
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
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
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!