システム監査技術者 2009年 午前2 問17
問題文
“学生”表と“学部”表に対し次のSQL文を実行した結果として、正しいものはどれか。
SELECT 氏名 FROM 学生,学部
WHERE 所属 = 学部名 AND 学部.住所 = '新宿'


選択肢
ア:
イ:(正解)
ウ:
エ:
🔒 解説は解答すると表示されます
SQLの結合と条件選択【午前2解説】
正解の理由
正しい結果は、イの「合田知子」「青木俊介」です。
このSQLは、学生の「所属」と学部の「学部名」が一致し、さらに学部の住所が「新宿」である組合せを選びます。
学部表で住所が「新宿」なのは「理」と「工」です。学生表で所属がそれぞれ「理」「工」の学生は、合田知子さんと青木俊介さんです。したがって、結果はこの2名になります。
解法ステップ
-
所属 = 学部名に注目します。
学生の所属と、学部表の学部名が一致する行を組み合わせます。 -
学部.住所 = '新宿'で絞り込みます。
学部.住所は学部表の住所を表します。住所が「新宿」の学部は「理」と「工」です。 -
該当する所属の学生を確認します。
- 理:合田知子
- 工:青木俊介
-
SELECT 氏名に従って、氏名だけを出力します。
よって、イが正しい結果です。
選択肢別の誤答解説
- ア:合田知子さんだけですが、「工」学部も住所が新宿なので、青木俊介さんも含まれます。
- イ:合田知子さんと青木俊介さんが含まれており、条件に合致します。
- ウ:坂口祐子さんの所属は「経済」です。経済学部の住所は「渋谷」なので、条件に合いません。また、青木俊介さんが抜けています。
- エ:新宿にある学部に所属する学生に加えて、坂口祐子さんも含まれています。経済学部の住所は「渋谷」のため、坂口さんは対象外です。
よくある誤解
-
学生の住所で絞り込むと思い込む
条件は学部.住所 = '新宿'です。学生表の住所ではなく、学部表の住所を判定します。 -
学部名だけで結果を決めてしまう
所属と学部名を対応させたうえで、学部の住所も確認する必要があります。 -
SELECT 氏名の対象を取り違える
条件を判定するために学生表と学部表を使いますが、出力される列は氏名だけです。
補足コラム
FROM 学生,学部 は、学生表と学部表の行をいったん組み合わせ、WHERE 句の条件に合う組合せを残す書き方です。現在は、結合条件を JOIN ... ON で明示する形式もよく使われます。この問題では、
所属 = 学部名 が表同士を対応させる条件で、学部.住所 = '新宿' が該当する学部を絞り込む条件です。FAQ
Q. 学生表の住所が「新宿」の人を選ぶ問題ですか?
いいえ。条件にあるのは
いいえ。条件にあるのは
学部.住所 なので、学部表の住所で判定します。Q. 「人文」学部に所属する川内聡さんが選ばれないのはなぜですか?
人文学部の住所は「渋谷」だからです。学部の住所が「新宿」という条件を満たしません。
人文学部の住所は「渋谷」だからです。学部の住所が「新宿」という条件を満たしません。
Q. 「所属」と「学部名」の一致は何を意味していますか?
学生が所属する学部と、学部表の各行を対応付ける条件です。この一致により、その学生の所属学部の住所を確認できます。
学生が所属する学部と、学部表の各行を対応付ける条件です。この一致により、その学生の所属学部の住所を確認できます。
関連キーワード: SQL、結合、選択条件、WHERE句、射影、直積

\ せっかくなら /
システム監査技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

