Heim >Datenbank >MySQL-Tutorial >Warum gibt mein Left-Join nicht alle Zeilen aus der linken Tabelle zurück?

Warum gibt mein Left-Join nicht alle Zeilen aus der linken Tabelle zurück?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-28 15:01:141002Durchsuche

Why Doesn't My Left Join Return All Rows From the Left Table?

Linker Join gibt nicht alle Zeilen zurück: Behebung des Problems

Wie in einem vorherigen Thread besprochen, das Fehlen aller Zeilen in einem linken Join Die Abfrage kann auf eine falsch platzierte WHERE-Klausel zurückzuführen sein. In diesem Fall zielt eine Abfrage darauf ab, Daten aus der Tabelle „jos_hp_properties“ zu extrahieren und optional einen Wert mit dem Namen „room_price_high“ aus der Tabelle „jos_hp_properties2“ auszuwählen, basierend darauf, dass die Feldspalte gleich 23 ist.

Um dieses Problem zu beheben Um die Rückgabe aller Zeilen aus der ersten Tabelle auszugeben und sicherzustellen, sollte die WHERE-Bedingung von ihrer ursprünglichen Position nach der LEFT OUTER JOIN-Anweisung in die JOIN-Anweisung verschoben werden Klausel selbst. Die geänderte Abfrage sollte wie folgt aussehen:

SELECT pr.*, pr7.value AS `room_price_high`
  FROM `jos_hp_properties` pr
       LEFT JOIN `jos_hp_properties2` pr7 
       ON pr7.property=pr.id
   AND 
       pr7.field=23

Durch die Einbindung der WHERE-Bedingung in den JOIN wird die Abfrage expliziter und weist die Datenbank an, nur Zeilen aus der zweiten Tabelle abzurufen, in denen die Feldspalte gleich 23 ist Dadurch wird sichergestellt, dass alle Zeilen aus der ersten Tabelle zurückgegeben werden, unabhängig davon, ob in der zweiten Tabelle ein passender Wert vorhanden ist. Folglich werden die entsprechenden NULL-Werte für Zeilen in der ersten Tabelle zurückgegeben, die keine übereinstimmende Zeile in der zweiten Tabelle haben, basierend auf dem Feld=23-Kriterium.

Das obige ist der detaillierte Inhalt vonWarum gibt mein Left-Join nicht alle Zeilen aus der linken Tabelle zurück?. 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