Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como selecionar registros agrupados somente se cada registro em um grupo atender a um determinado critério no MySQL?


Sugiro a seguinte 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)

A última condição que adicionei à consulta permite retornar um estilo somente se o número de tamanhos desse produto (total_records ) é igual ao número de tamanhos disponíveis para este produto (SUM(qty>0) ).
qty>0 retornará 0 (quando o produto não estiver disponível no tamanho fornecido ou 1 (quando estiver disponível). Então SUM(qty>0) retornará um número inteiro entre 0 e o número total de tamanhos.