Heim >Datenbank >MySQL-Tutorial >Wie rufe ich Daten aus zwei MySQL-Tabellen mit fehlenden Korrespondenten ab?
Auswahl aus zwei Tabellen in MySQL mit fehlenden Korrespondenten
Um Daten aus zwei Tabellen in MySQL abzurufen und Fälle zu behandeln, in denen nicht alle Zeilen in einer sind Wenn in der anderen Tabelle entsprechende Zeilen vorhanden sind, können Sie einen Outer-Join verwenden. Dieser Ansatz unterscheidet sich von der veralteten impliziten Join-Methode und bietet mehr Flexibilität.
Betrachten Sie das folgende Beispiel:
Sie haben zwei Tabellen, Kategorien (mit Spalten-ID und Titel) und Produkte (mit Spalten-ID). , Eigentümer-ID, Titel und Preis, wobei die Eigentümer-ID auf die ID in der Kategorientabelle verweist).
Ihre Abfrage zielt darauf ab, alle Kategorien und ihre Mindest- und Höchstpreise abzurufen. nach Kategorie-ID gruppiert. Die aktuelle Abfrage schließt jedoch Kategorien ohne entsprechende Produkte aus.
Um dieses Problem zu beheben, verwenden Sie einen LEFT JOIN:
SELECT sc.*, IFNULL(MIN(s.price), 0) AS minp, IFNULL(MAX(s.price), 0) AS maxp FROM categories AS sc LEFT JOIN products AS s ON s.ownerid = sc.id GROUP BY sc.id
Der LEFT JOIN stellt sicher, dass alle Zeilen aus der Kategorientabelle enthalten sind. auch wenn in der Produkttabelle keine entsprechenden Zeilen vorhanden sind. Die IFNULL-Funktion weist minp und maxp für Kategorien ohne Produkte 0 zu und verhindert so die Anzeige von NULL-Werten.
Alternativ können Sie je nach Ihren spezifischen Anforderungen lieber NULL für diese Kategorien anstelle von 0 zurückgeben.
Das obige ist der detaillierte Inhalt vonWie rufe ich Daten aus zwei MySQL-Tabellen mit fehlenden Korrespondenten ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!