2 つのテーブルがあるとします。
product
-------
productid
name
と
language
--------
productid
code
私は3つの製品を持っています:
1, 'homebody' -> 1, EN
2, 'continetnal' -> 2, FR
-> 2, EN
-> 2, ES
3, 'westy' -> 3, EN
-> 3, ES
-> 3, FR
-> 3, PT
4, 'oktoberfest' -> 4, DE
興味のある言語のリストがありEN, FR, ES
、いくつかの製品を選択するために 3 種類のクエリを作成したいとします。
- リスト内の任意の言語に一致 ('homebody'、'continental'、'westy')
- リスト内のすべての言語に一致 ('continental'、'westy')
- リスト内の言語に正確に一致 (「大陸」)
最初の解決策は次のとおりだと思います。
SELECT * FROM products AS p JOIN language AS l ON (p.productid = l.productid) WHERE l.code IN ('EN', 'ES', 'FR')
他のクエリを解決するための良い方法は何ですか? 製品に関連付けられている言語の数を数えて、それがクエリ内の言語の数と同じか、少なくとも言語の数であることを確認していると思われますが、これを実現する方法がわかりません。