平成30年秋期午後問6  設問5について

SQL勉強中さん  
(No.1)
平成30年秋期午後問6  設問5についてです。

正解は
T1.所属組織ID = T3.組織ID AND T3.組織長の社員ID = T2.社員ID
となっていますが、
T1.所属組織ID = T3.組織ID AND T3.組織長の社員ID = T1.社員ID
ではダメなのですか?

※正直、T1表とT2表の違いもいまいちわかってないです。。。

よろしくお願いいたします。

https://www.ap-siken.com/kakomon/30_aki/pm06.html
2021.03.27 20:55
Updraftさん 
(No.2)
結論から述べると、”ダメ”です。
なぜ、”T2.社員ID”と結合するのかについては、問題の解説があるのでそちらを参考にしてください。
私は、逆に”T1.所属組織ID = T3.組織ID AND T3.組織長の社員ID = T1.社員ID”でSQLを実行するとどうなるかと、
T1表とT2表の違いの2つについて少し解説したいと思います。
<T1.所属組織ID = T3.組織ID AND T3.組織長の社員ID = T1.社員ID  SQL実行>
図5のSQLにこの回答を当てはめたSQLの結果について解説します。
このSQLでは、”T1とT3の結合された表”と”T2”とのクロス結合を行います。
SELECT * FROM T1 , T2;
上記のようなSQLでは、FROM句で明示した表で結合条件を明記しない場合は、クロス結合を行います。
クロス結合を簡潔に述べると「両方のテーブルの全データを取り出して、すべての組み合わせでくっつけるやり方」となります。
それでは、問題の意図して間違っているのでこの場合のSQLでは、T2と表結合する必要性があるのです。
<T1表とT2表の違い>
まず、なぜ2つ同じ表を参照する必要性があるかというと、
問題の解説にもありましたが、参照した表の使用用途が違うからです。
T1の使用用途は、”申請者”のデータを参照するためです。
T2の使用用途は、”組織長の氏名”のデータを参照するためです。
表の使用用途が違うため別々の表として存在し、それらを結合する必要性があるのです。
2021.03.28 10:34
SQL勉強中さん  
(No.3)
丁寧な解説ありがとうございますm(__)m

SQL素人ですが、理解できました。
2021.03.29 19:49

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop