以下是我的表格。有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
答案 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