我的数据库中有很多关系。例如,我有USER table
,ROLE Table
和USERINROLE table
。我在我的网站上搜索需要查找指定角色的用户。例如,我想检索角色为“读者”的用户记录 AND “writer”
我的查询之前的地址如下:
SELECT * FROM User u INNER JOIN UserInRole ur ON
u.UserId= ur.UserId INNER JOIN Role r ON
Ur.RoleId = r.RoleId
WHERE就像
WHERE roleid IN (1,2)
但是这会让用户担任角色1或角色2,我需要他们同时担任角色1和角色2
我需要为ORM(Nhibernate)
一起检索用户行和角色行编辑:我正在使用NHibernate,所以如果有一种本地方式来做这件事,那就太棒了
答案 0 :(得分:0)
加入UserInRole的第二个副本。假设第二个副本的别名是ur2,那么你的where条件可以是
Where ur.roleId = 1 and ur2.roleId = 2
答案 1 :(得分:0)
难道你不能尝试这样的事情:
Select * from User u
inner join UserInRole ur1 on u.UserID = ur1.UserID
inner join UserInRole ur2 on u.UserID = ur2.UserID
where ur1.RoleID = 1
and ur2.RoleID = 2
未经测试且未经优化......
答案 2 :(得分:0)
您也可以使用INTERSECT运算符。
SELECT * FROM User
WHERE UserId IN
(
SELECT UserId FROM UserInRole
WHERE RoleId =1
INTERSECT
SELECT UserId FROM UserInRole
WHERE RoleId =2
)