Heim > Datenbank > MySQL-Tutorial > Wie kann ich alle Kategorien und ihre minimalen/maximalen Produktpreise, einschließlich Kategorien ohne Produkte, in MySQL abrufen?

Wie kann ich alle Kategorien und ihre minimalen/maximalen Produktpreise, einschließlich Kategorien ohne Produkte, in MySQL abrufen?

Linda Hamilton
Freigeben: 2024-12-19 00:07:10
Original
854 Leute haben es durchsucht

How Can I Retrieve All Categories and Their Minimum/Maximum Product Prices, Including Categories Without Products, in MySQL?

Auswahl aus mehreren Tabellen mit fehlender Korrespondenz in MySQL

Um effektiv mehrere Tabellen abzufragen, selbst in Szenarien, in denen nicht alle Zeilen in einer Tabelle vorhanden sind Wenn Sie entsprechende Einträge in einem anderen haben, bietet MySQL das Konzept der Outer-Joins. Stellen Sie sich das Szenario eines Online-Shops mit Kategorien und Produkttabellen vor.

Angenommen, wir möchten alle Kategorien abrufen und für jede Kategorie Mindest- und Höchstpreise berechnen. Wir möchten jedoch Kategorien ohne Produkte einschließen und ihre Mindest- und Höchstpreise auf 0 setzen. Die ursprüngliche Abfrage:

SELECT
sc.*, MIN(s.price) AS minp, MAX(s.price) AS maxp
FROM categories AS sc, products AS s
WHERE s.ownerid=sc.id
GROUP BY sc.id
Nach dem Login kopieren

Kategorien ohne Produkte werden aufgrund der Inner-Join-Bedingung ausgeschlossen. Um alle Kategorien einzubeziehen, verwenden wir 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
Nach dem Login kopieren

Der LEFT JOIN behält alle Zeilen in der Kategorientabelle (sc) bei, sodass die Abfrage alle Kategorien abrufen kann, einschließlich derjenigen ohne Produkte. Die IFNULL-Funktion setzt Nullwerte (die auftreten, wenn keine entsprechenden Produkte vorhanden sind) auf 0 und stellt so sicher, dass minp und maxp immer mit einem gültigen Wert zurückgegeben werden.

Dieser Ansatz stellt sicher, dass die Abfrage alle Kategorien abruft, unabhängig davon ob sie entsprechende Produkte haben, und es weist korrekterweise 0 für fehlende Preisinformationen zu.

Das obige ist der detaillierte Inhalt vonWie kann ich alle Kategorien und ihre minimalen/maximalen Produktpreise, einschließlich Kategorien ohne Produkte, in MySQL abrufen?. 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