問題ID: 19665 間違い?
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
問題ID: 19665 間違い?
msg# 1
mrbig060418
投稿数: 6
解答に間違いがあるように思えます。
解答は" 正常に実行されるが、データが1件も表示されない"
となっていおりますが以下の文だと複数行問い合わせのため、
エラーになるのではないでしょうか?
___________________________
SELECT employee_id, employee_name, hiredate
FROM employees
WHERE department_id >
(SELECT department_id FROM departments
WHERE department_id NOT BETWEEN 1 AND 5);
___________________________
解答は" 正常に実行されるが、データが1件も表示されない"
となっていおりますが以下の文だと複数行問い合わせのため、
エラーになるのではないでしょうか?
___________________________
SELECT employee_id, employee_name, hiredate
FROM employees
WHERE department_id >
(SELECT department_id FROM departments
WHERE department_id NOT BETWEEN 1 AND 5);
___________________________
Re: 問題ID: 19665 間違い?
msg# 1.1
arashi1977
居住地: 広島
投稿数: 1715
引用:実際にやると正解の通り1件も選択されませんが…
どのようなエラーになると想定されたのでしょうか?
また、解説の以下の部分はどのように理解されてますか?
引用:
解答は" 正常に実行されるが、データが1件も表示されない"
となっていおりますが以下の文だと複数行問い合わせのため、
エラーになるのではないでしょうか?
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
に接続されました。
SQL> select department_id, department_name
2 from departments;
DEPARTMENT_ID DEPARTMENT_NAME
------------- ------------------------
1 総務
2 営業
3 開発
4 マーケティング
5 品質管理
SQL> SELECT employee_id, employee_name, hiredate
FROM employees
WHERE department_id >
(SELECT department_id FROM departments
WHERE department_id NOT BETWEEN 1 AND 5); 2 3 4 5
レコードが選択されませんでした。
また、解説の以下の部分はどのように理解されてますか?
引用:
DEPARTMENTS表には、DEPARTMENT_ID列の値が1~5のデータが登録されています。
設問のSQL文の副問合せではDEPARTMENTS表のDEPARTMENT_ID列の値が1~5以外のデータを取り出そうとしていますが、DEPARTMENT_ID列の値が1~5以外のデータはないのでデータは1件も取り出されません。
副問合せでデータが1件も取り出されない場合、主問合せにはNULL値が返され、主問合せでの問い合わせ結果も0件となります。
Re: 問題ID: 19665 間違い?
msg# 1.2
mrbig060418
投稿数: 6
想定していたエラーとしては
3行目で単一行比較演算子を使用しているため、
単一行副問合せになりますが、
戻される行は複数ではないのかと思っておりました。
また、実際に試したところ(独自の環境でした。。。)
以下のエラーが出力したため、誤りかと思いました。すみません。
エラー:単一行副問合せにより2つ以上の行が戻されます
■以下、確認として質問になりますが、お答えいただければ幸いです。
1.問題の環境ではNULLが返されるためエラーにならないと考えて良いのでしょうか?
2.本問の副問合せが通常(データがあれば)、返すのは複数であっているのでしょうか?
3行目で単一行比較演算子を使用しているため、
単一行副問合せになりますが、
戻される行は複数ではないのかと思っておりました。
また、実際に試したところ(独自の環境でした。。。)
以下のエラーが出力したため、誤りかと思いました。すみません。
エラー:単一行副問合せにより2つ以上の行が戻されます
■以下、確認として質問になりますが、お答えいただければ幸いです。
1.問題の環境ではNULLが返されるためエラーにならないと考えて良いのでしょうか?
2.本問の副問合せが通常(データがあれば)、返すのは複数であっているのでしょうか?
Re: 問題ID: 19665 間違い?
msg# 1.2.1
arashi1977
居住地: 広島
投稿数: 1715
引用:WHEREで指定された条件から抽出することのできる行がないだけですので、その理解で良いかと思います。
引用:私の実行例にもありますが、設問の3つ目の図では以下の通りdepartmentsテーブルにはdepartment_idが1から5までしか存在しません。なので、BETWEENで1から5以外をもつレコードを条件指定していても返せるレコードがないので、複数返すことはありえないですね…
引用:「本問の副問合せ」というのがSQL文そのものを指しているのであれば、対象となるテーブルにどんなレコードがあるかによって結果が変わる、としか言えないと思いますよ
1.問題の環境ではNULLが返されるためエラーにならないと考えて良いのでしょうか?
引用:
2.本問の副問合せが通常(データがあれば)、返すのは複数であっているのでしょうか?
引用:
SQL> select department_id, department_name
2 from departments;
DEPARTMENT_ID DEPARTMENT_NAME
------------- ------------------------
1 総務
2 営業
3 開発
4 マーケティング
5 品質管理
Re: 問題ID: 19665 間違い?
msg# 1.3
mrbig060418
投稿数: 6
ご回答ありがとうございます。
もう少し文の意味を考えるべきでした。
ご説明いただいたおかげで理解が深まりました。
お騒がせしてすみません。
もう少し文の意味を考えるべきでした。
ご説明いただいたおかげで理解が深まりました。
お騒がせしてすみません。