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

MySQL Seleziona sia questo che quello

Ci sono due opzioni abbastanza semplici.

Puoi unirti due volte con la tabella di vendita, una volta per articolo. Se salti il ​​DISTINCT , potresti ottenere valori duplicati se il negozio vende più di un martello o un termometro.

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';

...oppure puoi trovare tutte le partite con martello o termometro e contare quanti valori distinti ci sono. Se sono possibili due valori e li ottieni entrambi, sei a posto.

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;

Un SQLfiddle per testare entrambi .