gpt4 book ai didi

php - 如何在没有多次查询的情况下确定两个用户是否共享某些信息

转载 作者:可可西里 更新时间:2023-11-01 06:50:33 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何允许用户 [V] 访问另一个用户的个人资料 [A],以查看用户 [A] 所在的所有组以及他们所在的组两者的一部分。

表格是:

USERS TABLE
user_id | name | email....
1 | Drent | drents... [V]
2 | Dude2 | dude2@... [A]
3 | Dude3 | dude3@...

GROUPS TABLE
group_id | group_name | joining_policy
1 | The Crazies | invite_only
2 | Team OSM | open
3 | My Group | approval_needed

GOUP_USERS TABLE
group_id | user_id
1 | 1
1 | 2
3 | 2
2 | 1
2 | 3

我可以对用户 [A] 所属的所有组进行一般查询:

SELECT groups.group_name FROM groups JOIN group_users 
ON groups.group_id=group_users.group_id WHERE group_users.user_id=2 LIMIT 0,10

当然会返回这个:

The Crazies - <a href="$row['group_id']?join=$my_user_id>Join This Group</a>
My Groups - <a href="$row['group_id']?join=$my_user_id>Join This Group</a>

但我想要的是一种让 [V] 查看他们共享哪些组以及可以加入哪些组的方法

例如:

The Crazies - You're already a member
My Groups - <a href="$row['group_id']?join=$my_user_id>Join This Group</a>

目前我只能考虑对返回的每一行使用子查询来执行此操作,但我确信有一种更简单、更有效的方法可以使用另一个连接或 WHERE IN 来执行此操作,但到目前为止我已经尝试过所有方法没有用。

类似于:

SELECT groups.group_name FROM groups JOIN group_users  
ON groups.group_id=group_users.group_id JOIN users AS visitor
ON visitor.user_id=group_users.user_id WHERE group_users.user_id=2 LIMIT 0,10

但我知道这行不通。

如有任何帮助,我们将不胜感激。

最佳答案

SELECT  g.*, guv.group_id IS NOT NULL AS is_member
FROM group_users gua
JOIN group g
ON g.id = gua.group_id
LEFT JOIN
group_users guv
ON guv.group_id = gua.group_id
AND guv.user_id = $v
WHERE gua.user_id = $a

关于php - 如何在没有多次查询的情况下确定两个用户是否共享某些信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5464851/

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