sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo seleccionar registros agrupados solo si cada registro en un grupo cumple con ciertos criterios en MySQL?

Sugiero la siguiente consulta:

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 última condición que agregué a la consulta permite devolver un estilo solo si la cantidad de tamaños para este producto (total_records ) es igual al número de tallas disponibles para este producto (SUM(qty>0) ).
qty>0 devolverá 0 (cuando el producto no está disponible en el tamaño dado, o 1 (cuando está disponible). Entonces SUM(qty>0) devolverá un número entero entre 0 y el número total de tamaños.