Oracle Query使所有用户获得角色和权限技能

时间:2012-05-27 11:44:09

标签: sql oracle10g

以下是我的表格。有4个表包含用户,角色,高级角色和角色与技能。我希望得到所有有角色的用户细节技巧。 以下是预期的输出样本。我需要一个查询来获得下面提到的输出。谢谢你的帮助。

表T1

T1_ID     Name
101       Peter
102       Kevin 
103       Ross 
104       Smith

表T2

T2_ID          Role
201             Admin
202             Programmer
203             Tester
204             Analyst

表T3

T3_ID        T1_ID            T2_ID
301          101               201
302          102               202
303          102               204
304          104               202
305          104               203

表T4

T4_ID      T1_ID       T2_ID    Skill
401         102        202      Java
402         102        202      Spring
403         102        204      Microsoft
404         104        202      c++
405         104        203      website  

我想要输出(所有具有T3& T4角色和技能的用户)。

T1_ID        user_name          Role                      skill
101          Peter              Admin          
102         Kevin              Programmer                 Java
102         Kevin              Programmer                 Spring
102         Kevin              Analyst                    Microsoft
104         Smith              Programmer                 C++
104         Smith              Tester                     Website

1 个答案:

答案 0 :(得分:1)

您可能需要进行一系列连接才能将所有表格链接在一起。在我的脑海中,以下内容可能会起作用:

select t1.*, T2.Role, T4.Skill from T1
left join T3 on T3.T1_ID = T1.T1_ID
left join T2 on T2.T2_ID = T3.T2_ID
left join T4 on T4.T1_ID = T1.T1_ID and T4.T2_ID = T2.T2_ID 
order by 1

查看此页面,了解不同类型的联接https://forums.oracle.com/forums/thread.jspa?threadID=595030

的简单示例

- 编辑 -

更新了查询工作,它将生成上表但也包括Ross,没有任何角色或技能。

T1_ID        user_name          Role                      skill
103          Ross

如果您不希望人们看起来没有角色,请在“order by 1”行之前添加以下行。

where T2.Role is not null