Heim >Datenbank >MySQL-Tutorial >Warum gibt mein Left-Join nicht alle Zeilen aus der linken Tabelle zurück?
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!