1

クエリに問題があります:

3 つのテーブルがあります: 製品 (id、名前) 設定 (id、名前) product_setting (product_id、setting_id)

例: フィルタを選択した製品のみを選択したい!

私はこれをします:

SELECT p. *, s.id as setting
FROM Products p
INNER JOIN product_setting p2 ON (p.id = p2.product_id)
INNER JOIN settings s ON (s.id = p2.setting_id)
WHERE s.id IN (1,2)

しかし、「設定」ID = 1 OR ID = 2 を持つすべての製品を取得します。これらの「設定」(AND) を持つ製品のみを取得するにはどうすればよいですか?

ありがとう!!

4

2 に答える 2

2
SELECT p.*, s.id as setting
FROM Products p
INNER JOIN product_setting p2 ON (p.id = p2.product_id)
INNER JOIN settings s ON (s.id = p2.setting_id)
WHERE s.id IN (1,2)
GROUP BY p.id
HAVING COUNT(*)=2; // size of IN()
于 2011-12-13T17:34:46.797 に答える
0

これはオーバーキルのように見えますが...

SELECT p. *, s.id as setting
FROM Products p
INNER JOIN product_setting p2 ON (p.id = p2.product_id)
INNER JOIN settings s ON (s.id = p2.setting_id)
INNER JOIN settings s2 ON (s.id = p2.setting_id)
WHERE 
    s.id = 1
    AND s2.id = 2
于 2011-12-13T17:51:34.910 に答える