SQL从同一组获取数据其他用户数据

时间:2018-02-13 04:21:35

标签: php mysql sql

我很难绕过SQL,我需要提取与我的PHP应用程序中登录用户属于同一组的其他用户的数据。

数据结构如下所示:

用户表

  • USER_ID
  • 名称
  • 状态
  • 生物

组表

  • 组名
  • USER_ID

我尝试做的是创建一个页面,显示用户所属的同一组或组的所有其他成员的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。登录用户可能属于多个组。

有关如何获取此数据的任何想法?

2 个答案:

答案 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;