gpt4 book ai didi

sql - 当且仅当一个 id 链接到 SQL Server CE 中第二个表中的多行时,我如何将两个表连接在一起?

转载 作者:行者123 更新时间:2023-12-02 22:37:36 25 4
gpt4 key购买 nike

我不知道我的标题是否正确传达了我要实现的查询,因此请编辑或建议一个更正确的更好的标题。我正在尝试将这两个表连接在一起:

表 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 与 pig 肉或鸡肉两者匹配的任何人来加入这些表。例如,如果我搜索 pork,则应返回 1 和 2,如果我搜索 porkchicken,则应返回 1 和 2仍然会返回,但 3 不会,因为它不匹配 chicken 以及 pork。如果我搜索 porkchickenbeef,应该只返回 1。

我一直在看this question ,但我不知道我要搜索多少项目(我可以一次搜索 porkchicken,然后搜索 porkchickenbeef 其他时间)。

我开始尝试基本的 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 关键字,因此很遗憾,我无法使用该选项。

最佳答案

如果您可以构建列表('chicken', 'pork', 'beef') 并计算应用程序中的项目:

SELECT p.*
FROM people AS p
JOIN (
SELECT person_id
FROM foods
WHERE name IN ('chicken', 'pork', 'beef') --- list
GROUP BY person_id
HAVING COUNT(*) = 3 --- list size
) AS pf ON pf.person_id = p.id ;

关于sql - 当且仅当一个 id 链接到 SQL Server CE 中第二个表中的多行时,我如何将两个表连接在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11216405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com