sql >> Databasteknik >  >> RDS >> Mysql

MySQL Välj både detta och det

Det finns två ganska enkla alternativ.

Du kan gå med två gånger med försäljningsbordet, en gång per vara. Om du hoppar över DISTINCT , kan du få dubbletter av värden om butiken säljer mer än en hammare eller termometer.

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

...eller så kan du hitta alla tändstickor med hammare eller termometer och räkna hur många distinkta värden det finns. Om det finns två möjliga värden och du får båda är du klar.

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;

En SQLfiddle för att testa båda .



  1. MySQL ATAN() Funktion – Returnera bågtangenten för ett värde (eller värden)

  2. Hur räknar man antalet förekomster av en viss delsträng i en SQL-varchar?

  3. MySQL / MariaDB:hur hittar man luckor i tidsbaserad data?

  4. Hur får man riktig storlek på MySQL-databasen?