OracleMasterのSQLの問題集について質問です。次のような問題がありました。

>次の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)の違いが判りません。どのように考えれば良いかどなたか説明頂ければ幸いです。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2007/01/22 11:03:58
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:kn1967 No.2

回答回数2915ベストアンサー獲得回数301

ポイント50pt

>従業員の名前とその上司の名前を合わせて表示したい。

>列別名は「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となります。

その他の回答1件)

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440

ポイント20pt

結果選択される行はまったく同じだが、列名が異なる。

同じテーブルを e,m の2つの名前で呼んでいるのだから

BをAと同じにする為に修正するとしたら、1行目を

SELCT m.name "Emp", e.ename "Mgr" 

にすべき。

つまりBは "Emp","Mgr" といった列名が逆。

id:kn1967 No.2

回答回数2915ベストアンサー獲得回数301ここでベストアンサー

ポイント50pt

>従業員の名前とその上司の名前を合わせて表示したい。

>列別名は「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となります。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません