假设我有两张桌子:
product
-------
productid
name
和
language
--------
productid
code
我有三个产品:
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
我想创建三种类型的查询来选择一些产品。
- 匹配我列表中的任何语言('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')
我解决其他查询的好方法是什么?我怀疑我计算与我的产品相关的语言数量并确保它等于或至少等于我的查询中的语言数量,但不知道如何实现这一点。