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

MySQL Selecione tanto Isso quanto Aquilo


Existem duas opções bastante simples.

Você pode participar duas vezes com a tabela de venda, uma vez por item. Se você pular o DISTINCT , você pode obter valores duplicados se a loja vender mais de um martelo ou termômetro.
SELECT DISTINCT s.shopname
FROM shops s
JOIN sale s1 ON s.shopcode = s1.shopcode AND s1.product='hammer'
JOIN sale s2 ON s.shopcode = s2.shopcode AND s2.product='thermometer';

...ou você pode encontrar todas as correspondências com martelo ou termômetro e contar quantos valores distintos existem. Se houver dois valores possíveis e você obtiver ambos, está pronto.
SELECT s.shopname
FROM shops s
JOIN sale s1 ON s.shopcode = s1.shopcode
WHERE s1.product IN('hammer','thermometer')
GROUP BY s.shopname
HAVING COUNT(DISTINCT s1.product)=2;

Um SQLfiddle para testar ambos .