sql >> Database >  >> RDS >> Mysql

MySQL Selecteer zowel dit als dat

Er zijn twee redelijk eenvoudige opties.

Je kunt twee keer meedoen aan de sale tafel, één keer per item. Als u de DISTINCT . overslaat , kunt u dubbele waarden krijgen als de winkel meer dan één hamer of thermometer verkoopt.

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

...of je kunt alle overeenkomsten vinden met een hamer of thermometer en tellen hoeveel verschillende waarden er zijn. Als er twee mogelijke waarden zijn en je krijgt beide, dan ben je klaar.

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;

Een SQLfiddle om beide te testen .



  1. LPAD met voorloopnul

  2. Alleen een tabel maken als deze niet in SQLite bestaat

  3. foreach-lus:alle kernen in R gebruiken (vooral als we sql-query's binnen de foreach-lus verzenden)

  4. MySQL-database en tabelgroottes controleren