助け合いフォーラム
Oracle Master Silver SQL 2019(1Z0-071)
問題ID : 26504
問題を開く
DEPARTMENTS表、EMPLOYEES表の構造を確認して下さい。


全従業員のうち、いずれかの部署に所属している従業員の従業員番号、従業員名、所属部署番号、所属部署名を表示するには、どの問い合わせを実行しますか(該当するものを全て選択して下さい)。


全従業員のうち、いずれかの部署に所属している従業員の従業員番号、従業員名、所属部署番号、所属部署名を表示するには、どの問い合わせを実行しますか(該当するものを全て選択して下さい)。
正解
SELECT e.employee_id, e.employee_name, d.department_id, d.department_name FROM departments d, employees e WHERE d.department_id = e.department_id;
SELECT employee_id, employee_name, department_id, department_name FROM departments JOIN employees USING (department_id);
解説
DEPARTMENTS表とEMPLOYEES表から、全従業員のうち、いずれかの部署に所属している従業員の従業員番号、従業員名、所属部署番号、所属部署名を取り出すには、2つの表の共通列であるDEPARTMENT_ID列の値で等価結合を行います。
以上より、
・SELECT e.employee_id, e.employee_name, d.department_id, d.department_name FROM departments d, employees e WHERE d.department_id = e.department_id;
・SELECT employee_id, employee_name, department_id, department_name FROM departments JOIN employees USING (department_id);
が正解となります。
正解のSQL文の実行結果は次のようになります。


その他の選択肢については次のとおりです。
・SELECT employee_id, employee_name, department_id, department_name FROM departments NATURAL JOIN employees USING(department_id);
NATURAL JOIN句とUSING句を1つの結合で同時に指定することはできません。
・SELECT employee_id, employee_name, department_id, department_name FROM departments d JOIN employees e ON d.department_id = e.department_id;
2つの表にある同名のDEPARTMET_ID列に表接頭辞が使用されていないためエラーとなります。
・SELECT e.employee_id, e.employee_name, d.department_id, d.department_name FROM departments d NATURAL JOIN employees e ON d.department_id = e.department_id;
NATURAL JOIN句では2つの表にある同名の列が自動的に結合列として判断されるので、ON句を指定することはできません。
以上より、
・SELECT e.employee_id, e.employee_name, d.department_id, d.department_name FROM departments d, employees e WHERE d.department_id = e.department_id;
・SELECT employee_id, employee_name, department_id, department_name FROM departments JOIN employees USING (department_id);
が正解となります。
正解のSQL文の実行結果は次のようになります。

SQLを表示
SELECT e.employee_id, e.employee_name, d.department_id, d.department_name
FROM departments d, employees e
WHERE d.department_id = e.department_id;
FROM departments d, employees e
WHERE d.department_id = e.department_id;

SQLを表示
SELECT employee_id, employee_name, department_id, department_name
FROM departments JOIN employees
USING (department_id);
FROM departments JOIN employees
USING (department_id);
その他の選択肢については次のとおりです。
・SELECT employee_id, employee_name, department_id, department_name FROM departments NATURAL JOIN employees USING(department_id);
NATURAL JOIN句とUSING句を1つの結合で同時に指定することはできません。
・SELECT employee_id, employee_name, department_id, department_name FROM departments d JOIN employees e ON d.department_id = e.department_id;
2つの表にある同名のDEPARTMET_ID列に表接頭辞が使用されていないためエラーとなります。
・SELECT e.employee_id, e.employee_name, d.department_id, d.department_name FROM departments d NATURAL JOIN employees e ON d.department_id = e.department_id;
NATURAL JOIN句では2つの表にある同名の列が自動的に結合列として判断されるので、ON句を指定することはできません。
参考
等価結合では、結合する2つの表の特定列の値が等しい行だけを結合してデータを取り出します。
等価結合を行うには次の方法があります。
・自然結合(NATURAL JOIN)
・USING句を使用した結合
・ON句を使用した結合
・Oracle独自の結合構文による結合
等価結合を行うには次の方法があります。
・自然結合(NATURAL JOIN)
・USING句を使用した結合
・ON句を使用した結合
・Oracle独自の結合構文による結合
正解がもう一つあるのでは
投稿日 2026/05/18
該当するものを全て選択して下さいとあるので、「SELECT employee_id, employee_name, department_id, department_name FROM departments d JOIN employees e ON d.department_id = e.department_id;」も正解であると思いますがどうでしょうか。
列名が同じなので一般的にON句を使うのは理解しています。
この投稿に対して返信しませんか?
k kajimuraryusei
2026/05/18 16:42
※ON句→USING句