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

- 編集 -

機能するようにクエリを更新すると、上記の表が生成されますが、役割やスキルがなくても Ross が含まれます。

T1_ID        user_name          Role                      skill
103          Ross

役割を持たない人物を表示させたくない場合は、次の行を 'order by 1' 行の前に追加します。

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