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

MySQL Seleccione tanto esto como aquello

Hay dos opciones bastante sencillas.

Puedes unirte dos veces a la mesa de venta, una vez por artículo. Si omite el DISTINCT , es posible que obtenga valores duplicados si la tienda vende más de un martillo o 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';

...o puede encontrar todas las coincidencias con un martillo o un termómetro y contar cuántos valores distintos hay. Si hay dos valores posibles y obtiene ambos, está listo.

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 para probar ambos .