“社員取得資格”表に対し、SQL文を実行して結果を得た。SQL文のaに入れる字句はどれか。 〔社員取得資格〕 社員コード, 資格 S001, FE S001, AP S001, DB S002, FE S002, SM S003, FE S004, AP S005, NULL 〔結果〕 社員コード, 資格1, 資格2 S001, FE, AP S002, FE, NULL S003, FE, NULL 〔SQL文〕 SELECT C1.社員コード, C1.資格 AS 資格1, C2.資格 AS 資格2 FROM 社員取得資格 C1 LEFT OUTER JOIN 社員取得資格 C2 [ a ]
外部結合の右側条件はON句、左側の絞り込みはWHERE句に置く
社員取得資格:
結果:
| 社員コード | 資格 |
|---|---|
| S001 | FE |
| S001 | AP |
| S001 | DB |
| S002 | FE |
| S002 | SM |
| S003 | FE |
| S004 | AP |
| S005 | NULL |
| 社員コード | 資格1 | 資格2 |
|---|---|---|
| S001 | FE | AP |
| S002 | FE | NULL |
| S003 | FE | NULL |
選択肢
- アON C1.社員コード = C2.社員コード AND C1.資格 = 'FE' AND C2.資格 = 'AP' WHERE C1.資格 = 'FE'
- イON C1.社員コード = C2.社員コード AND C1.資格 = 'FE' AND C2.資格 = 'AP' WHERE C1.資格 IS NOT NULL
- ウON C1.社員コード = C2.社員コード AND C1.資格 = 'FE' AND C2.資格 = 'AP' WHERE C2.資格 = 'AP'
- エON C1.社員コード = C2.社員コード WHERE C1.資格 = 'FE' AND C2.資格 = 'AP'
正解と解説
正解:ア ON C1.社員コード = C2.社員コード AND C1.資格 = 'FE' AND C2.資格 = 'AP' WHERE C1.資格 = 'FE'
結果には基本情報の資格を持つ社員だけが並び、応用情報を持たない社員は資格2がNULLになっている。左外部結合で残す側の絞り込み(基本情報を持つ行)はWHERE句で行い、応用情報の有無による突合せはON句に置くことで、対応が無い場合もNULLで残せる。
選択肢ごとの解説
- ア正しい。左側の行を基本情報の行に限定し、応用情報側の照合はON句で行っている。
- イ左側の絞り込みが緩く、基本情報以外の資格の行まで結果に残ってしまう。
- ウ右側の条件をWHERE句に置くと、対応が無くNULLになった行が除かれてしまう。
- エ両方の条件をWHERE句に置くと内部結合と同じになり、応用情報を持たない社員が消える。
同じ分野の他の問題
- "従業員"表から、男女それぞれの最年長従業員を除く全ての従業員を取り出すSQL文とするために、aに入れる字句はどれか。こ…2024年度 秋期 午前II 問10
- 表Aと表Bから、どちらか一方にだけ含まれるIDを得るSQL文のaに入れる字句はどれか。 〔SQL文〕 SELECT CO…2023年度 秋期 午前II 問10
- "社員"表から、男女それぞれの最年長社員を除く全ての社員を取り出すSQL文とするために、aに入れる字句はどれか。ここで、…2022年度 秋期 午前II 問12
- "文書"表、"社員"表から結果を得るSQL文のaに入れる字句はどれか。2022年度 秋期 午前II 問6
- "社員取得資格"表に対し、SQL文を実行して結果を得た。SQL文のaに入れる字句はどれか。 社員取得資格(社員コード,資…2021年度 秋期 午前II 問8
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。