Heim >Datenbank >MySQL-Tutorial >Wie führt man effizient einen MySQL LEFT JOIN mit drei Tabellen durch?

Wie führt man effizient einen MySQL LEFT JOIN mit drei Tabellen durch?

Susan Sarandon
Susan SarandonOriginal
2025-01-02 22:22:39621Durchsuche

How to Efficiently Perform a MySQL LEFT JOIN with Three Tables?

MySQL LEFT JOIN mit drei Tabellen verstehen

Problembeschreibung

Betrachten Sie drei Tabellen:

  • Personen (PersonID, Name, SS): Enthält Informationen über Einzelpersonen.
  • Ängste (FearID, Fear): Listet verschiedene Ängste auf.
  • Person_Fear (ID, PersonID, FearID): Setzt Einzelpersonen mit ihren damit verbundenen Ängsten in Beziehung.

Ziel ist es, alle Personen zusammen mit allen damit verbundenen Ängsten anzuzeigen ( einschließlich der Fälle, in denen eine Person keine Ängste hat).

Analyse des Abfrageproblems

Die bereitgestellte Abfrage weist eine auf Falsches Schema zum Verknüpfen von Tabellen:

SELECT persons.name, 
       persons.ss, 
       fears.fear 
FROM   persons 
       LEFT JOIN fears 
              ON person_fear.personid = person_fear.fearid 

Die ON-Klausel versucht fälschlicherweise, die Tabelle Person_Fear auf PersonID zu verknüpfen, statt auf FearID, der Spalte, die mit Fears verbunden ist.

Verbesserte Lösung

Um eine Linksverknüpfung effektiv durchzuführen, beachten Sie Folgendes Ansatz:

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

Erklärung:

  • Die Personentabelle bleibt mit Person_Fear auf Person_Fear.PersonID = Persons.PersonID verbunden.
  • Ein verschachtelter INNER JOIN verbindet Person_Fear mit Fears auf Person_Fear.FearID = Fears.FearID.
  • Diese Struktur stellt sicher, dass alle Personendatensätze enthalten sind, auch solche ohne damit verbundene Ängste.

Alternative Abfrage:

Eine andere Möglichkeit, das gleiche Ergebnis zu erzielen, ist:

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

Diese Abfrage verwendet zwei Links-Joins, um die Tabellen zu verbinden. ähnliche Ergebnisse erzielen.

Das obige ist der detaillierte Inhalt vonWie führt man effizient einen MySQL LEFT JOIN mit drei Tabellen durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn