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.