Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann man gruppierte Datensätze nur auswählen, wenn jeder Datensatz in einer Gruppe bestimmte Kriterien in MySQL erfüllt?

Ich schlage folgende Abfrage vor:

SELECT COUNT(a.id) AS total_records, a.disregard_inventory, a.qty
    FROM artikelstammdaten a
    ...
GROUP BY a.style
HAVING (SUM(a.qty) != 0 OR (a.disregard_inventory = 1))
       AND (SUM(qty>0) = total_records)

Die letzte Bedingung, die ich der Abfrage hinzugefügt habe, ermöglicht es, einen Stil nur dann zurückzugeben, wenn die Anzahl der Größen für dieses Produkt (total_records ) entspricht der Anzahl der verfügbaren Größen für dieses Produkt (SUM(qty>0)). ).
qty>0 gibt entweder 0 zurück (wenn das Produkt in der angegebenen Größe nicht verfügbar ist, oder 1 (wenn es verfügbar ist). Also SUM(qty>0) gibt eine ganze Zahl zwischen 0 und der Gesamtzahl der Größen zurück.