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

MySQL Sélectionnez ceci et cela

Il existe deux options assez simples.

Vous pouvez rejoindre deux fois la table de vente, une fois par article. Si vous ignorez le DISTINCT , vous pouvez obtenir des valeurs en double si le magasin vend plus d'un marteau ou thermomètre.

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 vous pouvez trouver toutes les correspondances avec un marteau ou un thermomètre et compter le nombre de valeurs distinctes. S'il y a deux valeurs possibles et que vous obtenez les deux, vous êtes prêt.

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 pour tester les deux .