Maison >base de données >tutoriel mysql >Comment joindre correctement trois tables dans MySQL en utilisant LEFT JOIN pour récupérer toutes les personnes et leurs peurs associées ?

Comment joindre correctement trois tables dans MySQL en utilisant LEFT JOIN pour récupérer toutes les personnes et leurs peurs associées ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-21 12:09:11710parcourir

How to Correctly Join Three Tables in MySQL Using LEFT JOIN to Retrieve All Persons and Their Associated Fears?

Jointure de plusieurs tables avec MySQL LEFT JOIN

Dans ce scénario, nous rencontrons le défi de joindre trois tables : 'Personnes' , 'Peurs', et 'Person_Fear'. L'objectif est d'afficher tous les enregistrements de la table 'Personnes' ainsi que les peurs associées, même si certaines personnes n'ont aucune peur.

Initialement, la requête LEFT JOIN fournie tente de joindre 'Person_Fear.PersonID' avec ' Person_Fear.FearID', qui donne des résultats incorrects. L'approche correcte consiste à joindre 'Person_Fear' avec 'Persons' et 'Fears' en fonction des relations de clé étrangère appropriées.

Solution :

SELECT Persons.Name, Persons.SS, Fears.Fear 
FROM Persons
LEFT JOIN Person_Fear ON Person_Fear.PersonID = Persons.PersonID
LEFT JOIN Fears ON Person_Fear.FearID = Fears.FearID

Cette requête révisée joint effectivement les « Personnes » à 'Person_Fear' et 'Fears' via leurs clés étrangères respectives. Le LEFT JOIN entre 'Persons' et 'Person_Fear' garantit que tous les enregistrements de la table 'Persons' sont inclus, qu'ils aient ou non des peurs associées.

Solution alternative :

SELECT Persons.Name, Persons.SS, Fears.Fear 
FROM Persons
LEFT JOIN Person_Fear 
    INNER JOIN Fears ON Person_Fear.FearID = Fears.FearID
ON Person_Fear.PersonID = Persons.PersonID

Cette approche alternative utilise un INNER JOIN entre 'Person_Fear' et 'Fears' pour filtrer jusqu'à les craintes pertinentes. Le LEFT JOIN suivant avec « Personnes » garantit toujours que tous les individus sont inclus dans les résultats.

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