HOME»基本情報技術者試験掲示板»平成30年 春期 基本情報技術者 午後 問03
投稿する
平成30年 春期 基本情報技術者 午後 問03 [1239]
かかさん(No.1)
設問1に関して、なぜウの解答が正解になって、イの解答が不正解になるのかがわからないです。
開発実行環境で、問3のテーブルを全部作って、イの解答を実行して、6年生を含む保護者の氏名と住所が抽出されてしまうのは、わかったのですが、抽出の条件がなぜ間違っているかまではわかりませんでした。
イのSQL文の、
WHERE 児童表.学年 = 6
では6年生の保護者氏名、住所は抽出できないのですか?
スッキリわかるSQLの本を見たのですが、真偽の判定ができていないから間違いなのでしょうか?
開発実行環境で、問3のテーブルを全部作って、イの解答を実行して、6年生を含む保護者の氏名と住所が抽出されてしまうのは、わかったのですが、抽出の条件がなぜ間違っているかまではわかりませんでした。
イのSQL文の、
WHERE 児童表.学年 = 6
では6年生の保護者氏名、住所は抽出できないのですか?
スッキリわかるSQLの本を見たのですが、真偽の判定ができていないから間違いなのでしょうか?
2018.05.03 17:56
管理人(No.2)
SQL文を見た限りでは、保護者表と児童表が結合されていないことが問題のようです。
通常であれば、「ウ」のように保護者表と児童表を結合し、その中から学年が 6 の行を選択するという流れになりますが、「イ」のように単体の児童表から学年が 6 の行を選択しても、その抽出条件は保護者表には反映されません。行の選択が行われていない保護者表に対してグループ化を行うことになるため、保護者表の全ての保護者名が表示されることになります。
通常であれば、「ウ」のように保護者表と児童表を結合し、その中から学年が 6 の行を選択するという流れになりますが、「イ」のように単体の児童表から学年が 6 の行を選択しても、その抽出条件は保護者表には反映されません。行の選択が行われていない保護者表に対してグループ化を行うことになるため、保護者表の全ての保護者名が表示されることになります。
2018.05.03 18:18
かかさん(No.3)
わかりました。
大変に参考になりました。
ありがとうございました。
ミルキーさんの解説のおかげで、頭の整理ができました。
大変に参考になりました。
ありがとうございました。
ミルキーさんの解説のおかげで、頭の整理ができました。
2018.05.03 19:36
カフーさん(No.4)
便乗で質問いたします。自分は「保護者番号」で保護者表と児童表を結合する時点で、ウとエの二択には絞れましたが、GROUP化の有無の判断ができませんでした。
問題文は「ここで、同一の保護者は重複して抽出しない。」と「また、同じ住所に氏名が同じ保護者は、複数人いないものとする。」とありますが、一家庭に6年生の児童が複数人いる場合、たとえば「双子」とか「養子」とかで、「情報」家の「情報一郎」「情報三子」がともに6年の場合、GROUP化などの処理をしないと、保護者「情報花子」さんは重複抽出してしまわないでしょうか?
問題文は「ここで、同一の保護者は重複して抽出しない。」と「また、同じ住所に氏名が同じ保護者は、複数人いないものとする。」とありますが、一家庭に6年生の児童が複数人いる場合、たとえば「双子」とか「養子」とかで、「情報」家の「情報一郎」「情報三子」がともに6年の場合、GROUP化などの処理をしないと、保護者「情報花子」さんは重複抽出してしまわないでしょうか?
2018.05.10 02:34
管理人(No.5)
要点のみ解答させていただきます。
「ウ」は DISTINCT を指定しているので結果セット内の重複する行は取り除かれます。「エ」は、「グループ化列または集計関数」以外を HAVING句 で指定しているためエラーになります。
「ウ」は DISTINCT を指定しているので結果セット内の重複する行は取り除かれます。「エ」は、「グループ化列または集計関数」以外を HAVING句 で指定しているためエラーになります。
2018.05.10 10:53
カフーさん(No.6)
こんばんは、管理作業ありがとうございます。
回答ありがとうございました。「DISTINCT」記述完全に失念していました。
ウは単なるAND検索ではなかったわけですね。
これからもよろしくお願いいたします。
回答ありがとうございました。「DISTINCT」記述完全に失念していました。
ウは単なるAND検索ではなかったわけですね。
これからもよろしくお願いいたします。
2018.05.10 21:33