我很难绕过SQL,我需要提取与我的PHP应用程序中登录用户属于同一组的其他用户的数据。
数据结构如下所示:
我尝试做的是创建一个页面,显示用户所属的同一组或组的所有其他成员的BIOS。
我试过这个SQL:
SELECT list.listname, list.user_id, list.groupname
FROM list
LEFT JOIN user_group ON list.user_id = user_group.user_id
WHERE user_group.user_id = 'test@testuser.com'
ORDER BY list.groupname
但我只是回到test@testuser.com
的生物,而没有其他生物。如果我删除了该语句的WHERE
部分,我会获得所有用户的所有BIOS,而不仅仅是与我的test@testuser.com
位于同一组中的用户的BIOS。登录用户可能属于多个组。
有关如何获取此数据的任何想法?
答案 0 :(得分:3)
这将返回给定用户的组:
SELECT l.groupname
FROM list l
WHERE l.user_id = 'test@testuser.com'
ORDER BY l.groupname;
如果您想要所有组中的
用户SELECT l.listname, l.user_id, l.groupname
FROM list l LEFT JOIN
user_group ug
ON l.user_id = ug.user_id
WHERE l.groupname IN (SELECT l2.groupname
FROM list l2
WHERE l2.user_id = 'test@testuser.com'
)
ORDER BY l.groupname;
答案 1 :(得分:0)
您可以通过自加入list
表来执行此操作:
SELECT l.listname, l.user_id, l.groupname
FROM list l
LEFT JOIN user_group ug ON l.user_id = ug.user_id
INNER JOIN list l2 ON l2.groupname = l.groupname
AND l2.user_id = 'test@testuser.com'
ORDER BY l.groupname;