gpt4 book ai didi

sql - 在 PostgreSQL JOIN 查询中使用二进制逻辑

转载 作者:行者123 更新时间:2023-11-29 12:27:07 25 4
gpt4 key购买 nike

我有 3 个看起来像这样的表格:

Users
----------
UserID
Name
Phone

User Groups
-----------
GroupID
Activity

Group Membership
---------------
UserID
GroupID

Independent Actives
-------------------
UserID
Activity

想法是用户可以作为组的一部分或自己执行事件。我想做的是返回所有参与某项事件的人。到目前为止,我所写的内容让我能够返回所有参与该事件的组中的用户。我想添加的是看到独立进行事件的人的能力。这是我目前所拥有的:

SELECT                                                                   
users.name, users.phone, user_groups.activity
FROM users
INNER JOIN group_membership ON group_membership.userID = users.userID
INNER JOIN user_groups ON user_groups.groupID = group_membership.groupID
WHERE user_groups.activity = 'Knitting';

上面的位工作正常,它显示了属于编织组的所有用户,但我也希望它显示所有独立编织的用户。这是我试图添加的内容:

SELECT                                                                   
users.name, users.phone, user_groups.activity
FROM users
INNER JOIN group_membership ON group_membership.userID = users.userID
INNER JOIN user_groups ON user_groups.groupID = group_membership.groupID
INNER JOIN independent_activity ON independent_activity.userID = users.userID
WHERE user_groups.activity = 'Knitting' OR independent_activity.activity = 'Knitting';

这里的问题是语法,我了解我正在尝试执行的算法,但我不知道如何将其转换为 sql,因此不胜感激。

最佳答案

在这种情况下你可以使用UNION

SELECT users.NAME
,users.phone
,user_groups.activity
FROM users
INNER JOIN group_membership ON group_membership.userID = users.userID
INNER JOIN user_groups ON user_groups.groupID = group_membership.groupID
WHERE user_groups.activity = 'Knitting'

UNION

SELECT users.NAME
,users.phone
,independent_activity.activity
FROM users
INNER JOIN independent_activity ON independent_activity.userID = users.userID
WHERE independent_activity.activity = 'Knitting';

您可能还想查找 UNIONUNION ALL 之间的差异,然后确定适合您要求的那个。

关于sql - 在 PostgreSQL JOIN 查询中使用二进制逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28458624/

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