与我昨天问过Recursive query where anchor and member have unions
的问题有关我有一个包含
的联结表menuItem | roleID | userID
1 | 2 | NULL
1 | 5 | NULL
2 | NULL | 81
我有角色表
roleID | roleName
1 | admin
3 | super admin
5 | basic user
我想要的是查询有权访问此菜单项的用户还包括给管理员用户(roleID 1 and 3
)。在链接的问题中,我能够通过在join子句中包含ID来包括管理员用户。但是因为在包含单个用户时,roleID为null,所以我无法获得结果:
userName | menuItem
admin1 | 2
admin2 | 2
realUser | 2
充其量我能够获得
userName | menuItem
realUser | 2
realUser | 2
realUser | 2
如何编写此代码以便将admin用户作为结果的一部分包含在内?感谢。
答案 0 :(得分:2)
听起来你想加入一个表用户到一个表菜单 什么时候
所以看起来像这样
From
users u
INNER JOIN Menu m
ON (u.RoleID in (1,3) and m.roleID is Null)
or u.UserId = m.userId
or u.RoleId = m.RoleId