我有一个表,用户A属于部门1.用户B属于部门1.用户A有权限x,y,z(在另一个表中)。用户B没有权利。
我希望获得用户B的权限,以便在null时返回用户A的权限,因为他们在同一个部门下!当用户B拥有权限时,则仅返回找到的权限,以便用户A和用户B具有不同的权限。所以没有权利意味着获得团体权利,否则保留特定权利。
到目前为止,我已经到了通过左连接简单地为用户B获取空的点。所以用户A具有权限而用户B具有空值。我希望用户B为用户A返回相同的结果。感谢任何帮助。
答案 0 :(得分:1)
所以有两种可能的情况:
这有点奇怪,但是......你已经知道如何离开加入用户的权利。空权利意味着用户没有权利。在这种情况下,您希望加入部门权利 - 另一个外部联接。
select u.userid, coalesce(ur.right, dr.right)
from users u
left join rights ur on ur.userid = u.userid
left join
(
select distinct u.deptid, r.right
from users u
join rights r on r.userid = u.userid
) dr on ur.right is null and dr.deptid = u.deptid;
答案 1 :(得分:1)
答案 2 :(得分:1)
我会这样做:
select r.*
from rights r
where r.user = 'B'
union all
select r.*
from rights r
where r.user = 'A' and
not exists (select 1 from rights r2 where r2.user = 'B');
答案 3 :(得分:0)
以下是我理解的方式:由于同一部门的所有用户共享相同的权限,因此某个用户的权利并不重要。如果是这样,这里有一个选项:我创建了虚拟表(没有约束或其他列)只是为了表明我的意思。它是在Oracle上执行的,但在其他地方应该可以(至少,我希望如此)。如果您的数据库不支持WITH因子子句,只需将该SELECT移动到内联视图中即可。如果您不知道如何,请说明。
$(function(){
function signUpAgreeCheckedEventHandler(e) {
e.preventDefault();
e.stopPropagation();
$('#signupConfirmPassword_js').attr('type','text')
alert('--')
}
$('#signupConfirmPassword_js:after').click(signUpAgreeCheckedEventHandler)
})