Heim >Datenbank >MySQL-Tutorial >Wie rufe ich Daten aus zwei MySQL-Tabellen mit fehlenden Korrespondenten ab?

Wie rufe ich Daten aus zwei MySQL-Tabellen mit fehlenden Korrespondenten ab?

Linda Hamilton
Linda HamiltonOriginal
2024-12-04 03:36:11823Durchsuche

How to Retrieve Data from Two MySQL Tables with Missing Correspondents?

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!

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