【发布时间】:2016-12-20 14:35:23
【问题描述】:
我正在尝试确定员工是否是特定用户组的成员,其中“承包商”一词是其中的一部分。所有员工都可以属于多个用户组,因此我得到了错误。
这是我的选择案例声明:
SELECT CASE WHEN
(SELECT usergroup FROM usergr
WHERE usergroupnumber = (SELECT usergroupnumber FROM userlist
WHERE username='Carl'))
LIKE '%contractor%' THEN 1
ELSE 0
END FROM DUAL
现在是这个子查询返回超过 1 行,因为 Carl 是超过 1 个用户组的成员。 我如何检查这些用户组之一是否包含“承包商”。
更新: 请让我为你们提供一些关于此的额外信息。
这将在文档管理程序中使用。在这个程序中,我可以创建附加到所有文档的不同属性。在这些属性中,我可以根据选择语句放置值。例如,我创建了一个属性,它将 projectnumber 值添加到在各种项目中创建的文档中。
对于我上面描述的问题,我想要一个属性值 0 或 1。这将控制用户在处理文件时是否可以在程序中执行某些任务。
我在上面写的选择案例语句“几乎”有效。因为如果您将 'Carl' 更改为 'John' 或 'Brian' 我会得到一个正确的值,因为它们只是一个用户组的成员。 但是对于“Carl”或“James”,我会收到错误消息,因为它们属于多个用户组。
如果您使用我给出的“示例”,我想要以下结果:
- 当“约翰”值 = 0 时
- 当“卡尔”值 = 1 时
- 当“詹姆斯”值 = 1 时
- 当 'Brian' 值 = 0 时
【问题讨论】:
-
请告诉我们相关表和列的名称。我们可以对其进行逆向工程,但与您告诉我们的情况相比,这需要更多的努力(并且来自每个志愿者,而不是您为我们所有人做一次工作)。
-
使用
EXISTS。