首页 > 解决方案 > 选择与“名称”在同一组中的用户

问题描述

Users
id  username
1   ryan
2   mike
3   annie
4   lisa 

Groups
id  name
1   football
2   hockey

Permissions 
user_id group_id           
1          1
1          2
2          1
4          2

所以我正在寻找每个用户名,他们至少属于一个用户名 ryan 的同一组。我也想认识不属于同一组的每个人。

SELECT Users.username
FROM Users
LEFT JOIN Permissions ON Users.id = Permissions.user_id
LEFT JOIN Groups.id = Permissions.group_id
WHERE Users.id; 

所以这就是我开始的方式,但不知道如何继续。

标签: sqlsqlite

解决方案


您可以通过用户和权限的多个连接来做到这一点:

select uu.username
from Users u
inner join Permissions p on p.user_id = u.id
inner join Permissions pp on pp.group_id = p.group_id
inner join Users uu on pp.user_id = uu.id and pp.user_id <> u.id
where u.username = 'ryan'

请参阅演示
结果:

| username |
| -------- |
| mike     |
| lisa     |

推荐阅读