我不知道我的标题是否正确传达了我想要实现的查询,所以请编辑或建议一个更正确的更好的查询。我正在尝试将这两个表连接在一起:
表 1:人
id |field1|field2|
------------------
1
2
3
4
.
.
. (etc)
表 2:食物
person.id | name
1 | chicken
1 | pork
1 | beef
2 | pork
2 | chicken
3 | chicken
4 | beef
.
. (etc)
我需要根据搜索 ID 与猪肉或鸡肉都匹配的任何人来加入这些表。例如,如果我搜索pork
,应该返回 1 和 2,如果我搜索pork
and chicken
,仍然应该返回 1 和 2,但是 3 不会是因为它不chicken
匹配pork
。如果我搜索pork
、chicken
和beef
,则应该只返回 1。
我一直在看这个问题,但我不知道我要搜索多少项目(我可能会搜索pork
andchicken
一次,and pork
、chicken
或beef
另一次)。
我开始尝试基本WHERE
条款,我相当肯定它是错误的(我确认了这一点,因为查询不起作用):
SELECT p.id
FROM people p, foods f
WHERE p.id = f.person_id AND (f.name = 'pork' AND f.name = 'chicken')
但这不会返回任何结果。我似乎记得几年前的 SQL 教程中我应该将EXISTS
关键字与子查询一起使用,但我不确定如何根据它来塑造我的查询/查询。
编辑:SQL Server CE 不支持该INTERSECT
关键字,所以很遗憾我无法使用该选项。