SELECT ID, TYPE FROM types NATURAL JOIN (
SELECT ID FROM types GROUP BY ID HAVING SUM(COLOR='Red') AND SUM(COLOR='Blue')
) t WHERE COLOR IN ('Red', 'Blue')
Podívejte se na sqlfiddle .
Případně, pokud jste rádi, že máte typy zřetězené do odděleného řetězce, můžete požadovaná data extrahovat jediným průchodem:
SELECT ID, GROUP_CONCAT(TYPE)
FROM types
WHERE COLOR IN ('Red', 'Blue')
GROUP BY ID
HAVING COUNT(*) = 2
Podívejte se na to na sqlfiddle .
Všimněte si, že pokud vaše tabulka může obsahovat více záznamů se stejným (ID, COLOR)
pár, měli byste nahradit COUNT(*)
s dražším COUNT(DISTINCT COLOR)
.