【发布时间】:2017-12-22 07:04:29
【问题描述】:
我想显示仅对一个以“a”开头的应用程序有效且所有其他应用程序应为“已禁用”的人员列表。 人员 ID 在一个表中,应用程序详细信息将在另一个表中。
必须选择满足以下条件的Person id。我附上了我加入三个表的模型结果。我需要选择用户如下(突出显示),
person_id 是主键。
使用的查询如下:
SELECT * FROM (select p.person_id from ur_username u join ur_username_person up on u.username_id=up.username_id
join ur_person p on up.person_id=p.person_id
WHERE ( U.USERNAME LIKE 'A-%' OR U.USERNAME LIKE 'a-%')
AND u.status='ACTIVE' AND U.ROLE_ID =123 ) E
WHERE p.person_id IN ( select p.person_id from ur_username u join ur_username_person up on u.username_id=up.username_id
join ur_person p on up.person_id=p.person_id
WHERE ( U.USERNAME NOT LIKE 'A-%' OR U.USERNAME NOT LIKE 'a-%')
AND u.status='DISABLED' AND U.ROLE_ID =123 )
我也得到了活跃在任何其他应用程序中的人。
在上表中,我希望用户名 a-pri(以 a- 开头)的状态也为“活动”,应用程序 id 123 的所有其他状态都已禁用。该 123 id 没有其他用户名处于活动状态。
【问题讨论】:
-
您使用的是 MS SQL Server 还是 Oracle?不要标记未涉及的产品。