Mysql
 sql >> Database >  >> RDS >> Mysql

Come selezionare i record raggruppati solo se ogni record in un gruppo soddisfa determinati criteri in MySQL?

Suggerisco la seguente query:

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)

L'ultima condizione che ho aggiunto alla query consente di restituire uno stile solo se il numero di taglie per questo prodotto (total_records ) è uguale al numero di taglie disponibili per questo prodotto (SUM(qty>0) ).
qty>0 restituirà 0 (quando il prodotto non è disponibile nella taglia indicata, o 1 (quando è disponibile). Quindi SUM(qty>0) restituirà un numero intero compreso tra 0 e il numero totale di dimensioni.