我的应用程序中有一个用户表。
Id Name ParentId
1 User1 0
2 User2 1
3 User3 1
4 User4 2
5 User5 2
用户有祖父母 - >父母 - >孩子的关系。使用以下查询
获取与祖父母相关的用户select * from user where ParentId=1 or ParentId in(select id from user where ParentId=1)
这些用户在我的角色表中也有多个角色,并且用于获取用户拥有的规则数,我使用select count(*) from group where userId=1
。
Id Role UserId
1 Role 1 1
2 Role 2 1
3 Role 3 2
4 Role 4 2
5 Role 5 3
我需要在一个查询中获取这两个数据。我对SQL不好,我知道我的第一个查询并不完美。我怎样才能做到这一点。
答案 0 :(得分:1)
您的查询只需要与您的角色表一起加入。
SELECT u.id, count(r.id) no_of_roles
FROM user u left join roles r
on u.id = r.userid
WHERE u.ParentId=1
OR u.ParentId IN
(SELECT id FROM t WHERE ParentId=1
)
group by u.id;