3
複数のカテゴリに属するすべての製品を表示するSQLクエリから結果を取得しようとしています。複数のパラメータを持つリレーショナルデータベースに属する行の選択
リレーショナルテーブルには、だから私は、例えばやろうとしています何23,33,43をCATEGORY_IDに属するすべてのproduct_id年代を選択しているこの
category_id product_id
23 72
33 72
43 72
23 32
33 18
のように見えます。この場合は72になります。注:私はすべてのIDに属する製品をORではなくキャッチしようとしています。したがって、このQRYはので、代わりに
SELECT * FROM products AS p JOIN prod_to_cat AS pc ON p.products_id=pc.products_id IN(23,33,43)
仕事wouldntの私は
SELECT * FROM products AS p JOIN prod_to_cat AS pc ON p.products_id=pc.products_id WHERE pc.categories_id=23 AND pc.categories_id=33 AND pc.categories_id=43
それは1つのカテゴリだけがあれば完璧に動作しますが、それは複数になったとき、それは結果が表示されませんを試してみました。
また、私は解決策を見つけるためにここに見て、
SELECT * FROM products AS p JOIN prod_to_cat AS pc ON p.products_id=pc.products_id
WHERE exists (select * from prod_to_cat c where c.products_id=p.products_id AND c.categories_id=23)
AND exists (select * from prod_to_cat c where c.products_id=p.products_id AND c.categories_id=33)
AND exists (select * from prod_to_cat c where c.products_id=p.products_id AND c.categories_id=43)
を示唆した。しかし、これは重複した結果を生成すると思われるものを発見しました。
これを行う正しい方法は何ですか?
? –