助け合いフォーラム

Oracle DB

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文の実行結果は次のようになります。


 
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;



 
SQLを表示
SELECT employee_id, employee_name, department_id, department_name
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独自の結合構文による結合
上に戻る

正解がもう一つあるのでは

投稿日 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句

この投稿に対して返信しませんか?