平成22年春期試験 午後問3 データベースについて
![午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】](/img/banner/sp.png)
学生さん
(No.1)
何故、設問4の答えがア なのかが分かりません
イの4行目は何故不必要なのでしょうか?
ご教授お願いします。
イの4行目は何故不必要なのでしょうか?
ご教授お願いします。
2021.03.20 12:57
phineasさん
(No.2)
最終行では生徒表が1に対して、select句の結果が0*となります。
対になっておらず、関係式として成り立たないため必要がありません。
対になっておらず、関係式として成り立たないため必要がありません。
2021.03.20 19:50
学生さん
(No.3)
生徒表の生徒番号を1つだけ選択してることに対して、全ての生徒番号をセレクトしているということですか?何度も質問してすみません。
2021.03.20 21:34
Updraftさん
(No.4)
はじめの質問である「イ」の選択肢の4行目「AND 生徒表.生徒番号 = (SELECT 生徒番号 FROM 生徒表)」ですが、
生徒表に2行以上存在する場合複数行の等価比較となるためエラーになると思います。
詳しい解説が知りたい場合は、「SQL 副問合せ 複数行」と調べると思います。
仮に、生徒表に1行しか存在しない場合この「生徒表.生徒番号 = (SELECT 生徒番号 FROM 生徒表)」の条件は常にTUREになるとも思います。
さらに、「AND 生徒表.生徒番号 = (SELECT 生徒番号 FROM 生徒表)」を、
複数行のエラーに対応したSQLに変換した場合、
「AND 生徒表.生徒番号 IN(SELECT 生徒番号 FROM 生徒表)」となります。
この場合でも、この問題の場合不必要となります。
理由としては、全ての表が結合されている時点で「生徒表.氏名 = '情報太郎'」の条件で結合した表のこの条件に該当しない行は無視されます。
結合された表同士は一蓮托生だと思ってください。
おそらく、「なお,生徒"情報太郎"が複数人いた場合は,過去に在籍したことがある生徒も含めて生徒番号の昇順に表示する。」この部分で4行目の条件式が必要だと判断したと思われるのですが、表結合をした時点で問題なくクリアしています。
むしろ、複数人いても一人しか出力しない場合は条件が追加されます。
内部結合についてもっと理解を深めるとと良いと思います。
基本情報技術者試験は、内部結合についての出現確率が高いイメージなのでしっかりと抑えておくと良いです。
頑張ってください。
生徒表に2行以上存在する場合複数行の等価比較となるためエラーになると思います。
詳しい解説が知りたい場合は、「SQL 副問合せ 複数行」と調べると思います。
仮に、生徒表に1行しか存在しない場合この「生徒表.生徒番号 = (SELECT 生徒番号 FROM 生徒表)」の条件は常にTUREになるとも思います。
さらに、「AND 生徒表.生徒番号 = (SELECT 生徒番号 FROM 生徒表)」を、
複数行のエラーに対応したSQLに変換した場合、
「AND 生徒表.生徒番号 IN(SELECT 生徒番号 FROM 生徒表)」となります。
この場合でも、この問題の場合不必要となります。
理由としては、全ての表が結合されている時点で「生徒表.氏名 = '情報太郎'」の条件で結合した表のこの条件に該当しない行は無視されます。
結合された表同士は一蓮托生だと思ってください。
おそらく、「なお,生徒"情報太郎"が複数人いた場合は,過去に在籍したことがある生徒も含めて生徒番号の昇順に表示する。」この部分で4行目の条件式が必要だと判断したと思われるのですが、表結合をした時点で問題なくクリアしています。
むしろ、複数人いても一人しか出力しない場合は条件が追加されます。
内部結合についてもっと理解を深めるとと良いと思います。
基本情報技術者試験は、内部結合についての出現確率が高いイメージなのでしっかりと抑えておくと良いです。
頑張ってください。
2021.03.21 09:47
学生さん
(No.5)
詳しい解説ありがとうございます!
残り少ないですが、内部結合について勉強してきます。
残り少ないですが、内部結合について勉強してきます。
2021.03.21 15:41
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。