見出し画像

狙った分野の午後問題をやっつけたいよPart3・・・小学生を対象とした、ある子供会の名簿を管理する関係データベース『設問2』

#基本情報技術者試験 #平成30年 #春期 #午後 #データベース #SQL

設問2は、穴埋め問題のようです。

チェックしながら問題文を読みます。
大事そうなことの中にも、すでにSQL文になっているやつもあるな。

黄色い部分はまだ書かれていないので、空欄の解答群にあるはず。
では解答群。

さっき黄色くマークしたところが、ちゃんと書かれているか?を順番に見ていこうかな。
黄色でマークしたのは・・・
 ・18001のイベント
 ・それに参加した児童
 ・そのうち1年生

の保護者をピックアップしたいんだよ、という意味のところ。
じゃあまず、18001のイベントについて書いてあるところに注目してみる。

全部ちゃんと18001のイベントであるものという文になっているんだけど、ア・と、ウ・エで違いがあった。
まず、ア・イはイベント表のイベント番号が18001のもの、と書いてある。
一方、ウ・エは活動表のイベント番号が18001のもの、だ。
たしかにどちらの表にもイベント番号がある。

どっちがいいかなあ。
迷ったので、黄色でマークしたところの他の部分もチェック。
 ・18001のイベント
 ・それに参加した児童
 ・そのうち1年生
となると、どの子がどのイベントに参加したか?がわかるほうじゃないといけないな。ってことは、活動表だよね。

そうすると、解答群のア・イは候補から消えた。
では、ウ・エをさらに調べていくことになるね。

ウとエのFROMのところはまったく同じ、WHEREも途中まではまったく同じ。ひもづけをちゃんとしている。

では、WHEREの続きで、ウとエの違いを調べる。

のWHEREは、イベント番号が18001のやつ、
のWHEREは、学年が1かつイベント番号が18001のやつとなっている。
エがいいんじゃないか?と思う。
エで決まり。


けど、ウには続きがあるので、一応見てみようかな。
ウのWHEREの後には、GROUP BYが書かれている。グループを作るやつだ。GROUP BY 児童表.児童氏名だから、児童氏名でグループを作っている。
GROUP BYは、実はSELECTと密接な関係にあるのだ。
GROUP BYに使った項目はSELECTで使えるけど、そうじゃない項目はそのままSELECTで使うことはできない。
工夫を凝らせばできないことはないけど、今回のSELECTのところに工夫はないまま、保護者番号と保護者氏名を使ってる。この使い方だとエラーになってしまうのです。

いいなと思ったら応援しよう!