0

下面是我的表。有 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
4

1 回答 1

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

- 编辑 -

更新后的查询开始工作,它会生成上表但也包括罗斯,没有任何角色或技能。

T1_ID        user_name          Role                      skill
103          Ross

如果您不希望出现没有角色的人,请在“order by 1”行之前添加以下行。

where T2.Role is not null
于 2012-05-27T12:17:26.337 回答