Heim > Datenbank > MySQL-Tutorial > Wie rufe ich alle Kategorien und ihre minimalen/maximalen Produktpreise in MySQL ab, auch wenn einige Kategorien keine Produkte haben?

Wie rufe ich alle Kategorien und ihre minimalen/maximalen Produktpreise in MySQL ab, auch wenn einige Kategorien keine Produkte haben?

Linda Hamilton
Freigeben: 2024-12-04 16:25:16
Original
679 Leute haben es durchsucht

How to Retrieve All Categories and Their Minimum/Maximum Product Prices in MySQL, Even When Some Categories Have No Products?

Auswahl aus zwei Tabellen mit ungleichen Zeilen in MySQL

In einer Online-Shopping-Datenbank mit zwei Tabellen – Kategorien und Produkte – ist eine häufige Aufgabe um alle Kategorien zusammen mit den minimalen und maximalen Produktpreisen in jeder Kategorie abzurufen. Bei einer einfachen Abfrage tritt jedoch ein Problem auf: Kategorien ohne Produkte werden aus den Ergebnissen ausgeschlossen.

Um dieser Herausforderung zu begegnen, ist es notwendig, einen Outer-Join anstelle eines impliziten Joins zu verwenden. Mit einem Outer-Join können Zeilen aus einer Tabelle (in diesem Fall Kategorien) abgerufen werden, auch wenn in der anderen Tabelle (Produkte) keine entsprechenden Zeilen vorhanden sind. Konkret wird hier ein Left-Join verwendet, sodass alle Kategorien in den Ergebnissen enthalten sind.

Zusätzlich wird die Funktion IFNULL() verwendet, um Nullwerte für Kategorien ohne Produkte durch 0 zu ersetzen. Diese Funktion nimmt den Wert des im ersten Argument bereitgestellten Ausdrucks an und gibt, wenn er null ist, stattdessen den im zweiten Argument angegebenen Wert zurück.

Die aktualisierte Abfragesyntax lautet wie folgt:

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
Nach dem Login kopieren

Durch die Verwendung eines äußeren Joins und der Funktion IFNULL() können wir alle Kategorien abrufen und sicherstellen, dass Kategorien ohne Produkte mit Minp- und Maxp-Werten von 0 dargestellt werden. Diese Abfrage bewältigt effektiv die Notwendigkeit, aus zwei Tabellen auszuwählen auch wenn nicht alle Zeilen in einer Tabelle entsprechende Einträge in der anderen haben.

Das obige ist der detaillierte Inhalt vonWie rufe ich alle Kategorien und ihre minimalen/maximalen Produktpreise in MySQL ab, auch wenn einige Kategorien keine Produkte haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage