我正在尝试弄清楚如何允许用户[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
Run Code Online (Sandbox Code Playgroud)
我可以对用户[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
Run Code Online (Sandbox Code Playgroud)
这当然会归还:
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>
Run Code Online (Sandbox Code Playgroud)
但我想要的是[V]看待他们共享哪些群组以及他们可以加入哪些群组的方式
例如:
The Crazies - You're already a member
My Groups - <a href="$row['group_id']?join=$my_user_id>Join This Group</a>
Run Code Online (Sandbox Code Playgroud)
目前我只能考虑使用返回的每一行的子查询来执行此操作,但我确信使用另一个连接或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
Run Code Online (Sandbox Code Playgroud)
但我知道这不起作用.
任何帮助将不胜感激.
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |