Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment sélectionner des enregistrements groupés uniquement si chaque enregistrement d'un groupe répond à certains critères dans MySQL ?

Je suggère la requête suivante :

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)

La dernière condition que j'ai ajoutée à la requête permet de retourner un style uniquement si le nombre de tailles pour ce produit (total_records ) est égal au nombre de tailles disponibles pour ce produit (SUM(qty>0) ).
qty>0 renverra soit 0 (lorsque le produit n'est pas disponible dans la taille donnée, soit 1 (lorsqu'il est disponible). Donc SUM(qty>0) renverra un nombre entier entre 0 et le nombre total de tailles.