HOME»基本情報技術者試験掲示板»平成30年 春期 基本情報技術者 午後 問03
投稿する

[1239] 平成30年 春期 基本情報技術者 午後 問03

 かかさん(No.1) 
設問1に関して、なぜウの解答が正解になって、イの解答が不正解になるのかがわからないです。

開発実行環境で、問3のテーブルを全部作って、イの解答を実行して、6年生を含む保護者の氏名と住所が抽出されてしまうのは、わかったのですが、抽出の条件がなぜ間違っているかまではわかりませんでした。


イのSQL文の、
  WHERE 児童表.学年 = 6 
では6年生の保護者氏名、住所は抽出できないのですか?


スッキリわかるSQLの本を見たのですが、真偽の判定ができていないから間違いなのでしょうか?
2018.05.03 17:56
管理人(No.2) 
SQL文を見た限りでは、保護者表と児童表が結合されていないことが問題のようです。

通常であれば、「ウ」のように保護者表と児童表を結合し、その中から学年が 6 の行を選択するという流れになりますが、「イ」のように単体の児童表から学年が 6 の行を選択しても、その抽出条件は保護者表には反映されません。行の選択が行われていない保護者表に対してグループ化を行うことになるため、保護者表の全ての保護者名が表示されることになります。
2018.05.03 18:18
 かかさん(No.3) 
わかりました。
大変に参考になりました。
ありがとうございました。
ミルキーさんの解説のおかげで、頭の整理ができました。
2018.05.03 19:36
カフーさん(No.4) 
便乗で質問いたします。自分は「保護者番号」で保護者表と児童表を結合する時点で、ウとエの二択には絞れましたが、GROUP化の有無の判断ができませんでした。
問題文は「ここで、同一の保護者は重複して抽出しない。」と「また、同じ住所に氏名が同じ保護者は、複数人いないものとする。」とありますが、一家庭に6年生の児童が複数人いる場合、たとえば「双子」とか「養子」とかで、「情報」家の「情報一郎」「情報三子」がともに6年の場合、GROUP化などの処理をしないと、保護者「情報花子」さんは重複抽出してしまわないでしょうか?
2018.05.10 02:34
管理人(No.5) 
要点のみ解答させていただきます。

「ウ」は DISTINCT を指定しているので結果セット内の重複する行は取り除かれます。「エ」は、「グループ化列または集計関数」以外を HAVING句 で指定しているためエラーになります。
2018.05.10 10:53
カフーさん(No.6) 
こんばんは、管理作業ありがとうございます。
回答ありがとうございました。「DISTINCT」記述完全に失念していました。
ウは単なるAND検索ではなかったわけですね。
これからもよろしくお願いいたします。
2018.05.10 21:33

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。
© 2010-2024 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop