リンクテーブルに私のSQLクエリの正確な結果を取得する方法

ロナルド・マクドナルド:

イムは正確にグループに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;

参照のデモを

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=16774&siteId=1