>次のemp表から従業員の名前とその上司の名前を合わせて表示したい。夫々列別名は「Emp」「Mgr」にします。mgr列には各従業員の上司のemp_idが格納されています。次のSQL文のうち正しいものを1つ選べ。
A)SELCT e.name "Emp", m.ename "Mgr"
FROM emp e, emp m
WHERE e.mgr = m.emp_id;
B)SELCT e.name "Emp", m.ename "Mgr"
FROM emp e, emp m
WHERE e.emp_id = m.mgr;
(他肢は誤りの判別が容易だった為省略)
正解はAとなっています。しかし私にはA)とB)の違いが判りません。どのように考えれば良いかどなたか説明頂ければ幸いです。
>従業員の名前とその上司の名前を合わせて表示したい。
>列別名は「Emp」「Mgr」にします。
>SELCT e.name "Emp", m.ename "Mgr"
Empが従業員名で、Mgrが上司名なのですから、
e.name "Emp" ということから e が従業員のデータを示し、
m.ename "Mgr" ということからは m が上司のデータを示していることが判ると思います。
>mgr列には各従業員の上司のemp_idが格納されています。
eが従業員だと判ったので『e.mgr = m.emp_id』で結びつければ・・・で、答えはAとなります。
結果選択される行はまったく同じだが、列名が異なる。
同じテーブルを e,m の2つの名前で呼んでいるのだから
BをAと同じにする為に修正するとしたら、1行目を
SELCT m.name "Emp", e.ename "Mgr"
にすべき。
つまりBは "Emp","Mgr" といった列名が逆。
>従業員の名前とその上司の名前を合わせて表示したい。
>列別名は「Emp」「Mgr」にします。
>SELCT e.name "Emp", m.ename "Mgr"
Empが従業員名で、Mgrが上司名なのですから、
e.name "Emp" ということから e が従業員のデータを示し、
m.ename "Mgr" ということからは m が上司のデータを示していることが判ると思います。
>mgr列には各従業員の上司のemp_idが格納されています。
eが従業員だと判ったので『e.mgr = m.emp_id』で結びつければ・・・で、答えはAとなります。
コメント(0件)