平成21年度 春期 午前Ⅱ 問17
データベース
SQL文を実行した結果
“学生”表と“学部”表に対し次のSQL文を実行した結果として,正しいものはどれか。
SELECT 氏名 FROM 学生,学部
WHERE 所属 = 学部名 AND 学部.住所 = '新宿'
学生
| 氏名 | 所属 | 住所 |
|---|---|---|
| 合田知子 | 理 | 新宿 |
| 青木俊介 | 工 | 渋谷 |
| 川内聡 | 人文 | 渋谷 |
| 坂口祐子 | 経済 | 新宿 |
学部
| 学部名 | 住所 |
|---|---|
| 理 | 新宿 |
| 工 | 新宿 |
| 人文 | 渋谷 |
| 経済 | 渋谷 |
選択肢は原典では氏名の表。
- ア氏名:合田知子
- イ氏名:合田知子 / 青木俊介
- ウ氏名:合田知子 / 坂口祐子
- エ氏名:合田知子 / 青木俊介 / 坂口祐子
答えと解説を見る
✓ これが正解イ氏名:合田知子 / 青木俊介
解説
学部の住所が新宿なのは理と工なので、合田知子と青木俊介です。
このSQL文は、学生表の所属と学部表の学部名が等しい行どうしを結合し、そのうち学部表の住所が新宿の行から氏名を取り出します。見分ける軸は、住所の条件が学生表と学部表のどちらの列に掛かっているかです。条件は学部.住所と書かれているので、学部表で住所が新宿の学部、つまり理と工が対象になります。所属が理の合田知子と、所属が工の青木俊介が残り、結果は二人です。青木俊介本人の住所は渋谷ですが、条件は学生の住所ではないので結果に入ります。同じ列名が二つの表にあるときは、表名の付いた側の列で絞ると覚えると取り違えません。
ほかの選択肢はなぜ違うのか
- ア氏名:合田知子:合田知子だけになるのは、学部の住所に加えて学生本人の住所も新宿であることを条件にした場合です。設問のSQL文は学生の住所を条件にしていないので、所属が工の青木俊介が漏れています。
- ウ氏名:合田知子 / 坂口祐子:合田知子と坂口祐子は、学生本人の住所が新宿の二人です。学部の住所ではなく学生の住所で絞った場合の結果であり、坂口祐子の所属である経済の住所は学部表では渋谷なので、条件を満たしません。
- エ氏名:合田知子 / 青木俊介 / 坂口祐…:三人が並ぶのは、学部の住所が新宿である条件と、学生の住所が新宿である条件のどちらかを満たせばよい、とした場合の結果です。SQL文の条件は学部の住所だけなので、坂口祐子は含まれません。
出典:平成21年度 春期 システム監査技術者試験 午前Ⅱ 問17
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)