Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用户的SQL左联接表_Sql_Oracle_Join_Self Join - Fatal编程技术网

用户的SQL左联接表

用户的SQL左联接表,sql,oracle,join,self-join,Sql,Oracle,Join,Self Join,我有下面的示例表(根据我的实际情况进行了简化,因为其中还有一些连接) 我在这个表中有许多用户和许多组 我在用户权限方面遇到问题,有些用户可以在我的应用程序中执行操作,而其他用户则不能。目前,我必须手动检查并找出区别 我想从上表中输入一个查询,它会给出这样的答案 |permission| u1 | u2 | |perm1 | 1 | 1 | |perm2 | 1 | 0 | |perm3 | 1 | 0 | |perm4 | 0 | 1 | 我并不

我有下面的示例表(根据我的实际情况进行了简化,因为其中还有一些连接)

我在这个表中有许多用户和许多组

我在用户权限方面遇到问题,有些用户可以在我的应用程序中执行操作,而其他用户则不能。目前,我必须手动检查并找出区别

我想从上表中输入一个查询,它会给出这样的答案

|permission| u1 | u2 |
|perm1     | 1  | 1  |
|perm2     | 1  | 0  |
|perm3     | 1  | 0  |
|perm4     | 0  | 1  |
我并不真的想要用户下的1和0,但我想要一些东西,我可以很容易地想象用户1拥有这些权限,而用户2没有。这对我来说非常有用,可以确保用户拥有相同的权限

我已经完成了SQL以获取顶部表,以便查看权限

我在想,某种形式的左连接本身可能就是答案,但我尝试的一切似乎都以无效的SQL结束

有什么提示吗?如果我有了一个起点,我很乐意尝试:)


提前感谢

您正在寻找的是所谓的“旋转”。一种方法是通过分组,如:

select  permission
,       count(case when username = 'u1' then 1 end) as User1
,       count(case when username = 'u2' then 1 end) as User2
,       count(case when username = 'u3' then 1 end) as User3
,       ...
from    YourTable
group by
        permission
看起来Oracle支持。您可以使用它来完成相同的任务:

select  *
from    YourTable
pivot   (
        count(*) as HasPermission
        for (username) in ('u1', 'u2', 'u3', ...)
        );

select  *
from    YourTable
pivot   (
        count(*) as HasPermission
        for (username) in ('u1', 'u2', 'u3', ...)
        );