我编写了以下SQL来创建一个列,我可以使用该列来填充表格中的复选框以管理用户权限。Sql:有一列返回1或0,表示表中是否存在一个用于预定组ID的表
SELECT access_b2b.access_id,
access_b2b.description,
'active'= CASE
WHEN access_group.group_id IS NOT NULL THEN 1
ELSE 0
END
FROM access_b2b
LEFT JOIN access_group
ON access_group.access_id = access_b2b.access_id
WHERE (access_group.group_id = 10
OR access_group.group_id IS NULL)
但是,它并未从access_b2b
中选择所有条目。问题是到最后一行:
where (access_group.group_id=10 or access_group.group_id is null)
没有它,我得到重复的条目和不同active
返回的值。此外,我意识到这不是合适的条件,因为access_group
中的条目可能存在于不同的access_group.group_id
,这意味着并非所有其余条目都将被access_group.group_id is null
拉入。
我想写我的条件,这样,如果做了沿着线:
这是我努力遵循以下格式:
Where For Each unique access_id in access_group
select the one where group_id=10
if no group_id=10
select any other one
end
end
最终目标是让以1或0返回的列表示对于预定组ID是否存在access_id。
请注意,在整个解释中,我使用了group_id = 10来简化,稍后将用SqlParameter替换。
任何帮助表示赞赏,非常感谢你!
样本数据(示以简化数据时才有用列)
access_group access_id group_id 27 1 27 11 28 1 28 11 33 1 33 3 33 11 43 11 44 1 44 10 44 11 ... access_b2b access_id description 1 Add 2 Edit 3 Delete 4 List 5 Payments 6 Open Files 7 Order 8 Mod ...
您能否提供一些(假的)样本数据?我很难想象你的桌子。 – ohyeah 2014-10-10 12:16:11
肯定@BasR。给我几分钟 – starvator 2014-10-10 12:17:14
@BasR。更新。 – starvator 2014-10-10 12:25:16