ロナルド・マクドナルド:
イムは正確にグループにbrand_idの試合のグループを取得しようとしています。
私は、このソリューションを試してみた(フィドル参照)しかし、私は、それはすべての3つのグループを示しているすべてのグループに割り当てられているブランドのIDを持っている一つのアイテムを入手しようとします。しかし、それはそのない正確に一致しているため、ゼロと一致する必要があります。
http://sqlfiddle.com/#!9/a5b16e/2/0
これに対する解決策がある場合、私は思っていました
SELECT group_id as groep
FROM mailgroups a
WHERE a.brand_id IN (2)
GROUP BY a.group_id
HAVING COUNT(*) = 1
これは、グループを返す必要があります3
SELECT group_id as groep
FROM mailgroups a
WHERE a.brand_id IN (2, 1)
GROUP BY a.group_id
HAVING COUNT(*) = 2
これが唯一の1をGROUP_ID返す必要があります
離れて渡します:
あなたは、サブクエリを必要とするか、または参加しません。
正しい条件を設定having
句と削除where
句を:
SELECT group_id as groep
FROM mailgroups
GROUP BY group_id
HAVING SUM(brand_id IN (2)) = 1 AND SUM(brand_id NOT IN (2)) = 0;
SELECT group_id as groep
FROM mailgroups
GROUP BY group_id
HAVING SUM(brand_id IN (1, 2)) = 2 AND SUM(brand_id NOT IN (1, 2)) = 0;
参照のデモを。