平成22年春期午後問3

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
みかんさん  
(No.1)
https://www.fe-siken.com/kakomon/22_haru/pm03.html
設問2について、なぜ答えがイになるのでしょうか?
Whereの結合について、結合した結果どのような表ができるのか、その表からどのようにして答えが導き出せるのかを具体的な値などを交えて詳しく教えて貰えるとありがたいです。

それから設問3について、ア、イに絞り込むことはできるのですが、答えがなぜイになるのか分かりません。AND 成績表.年度 = 2008がなぜ必要なのでしょうか?あるのとないことでは処理結果にどのような違いがあるのか、詳しく教えて欲しいです🙇‍♀️
2022.11.09 10:24
jjon-comさん 
FE ゴールドマイスター
(No.2)
> 設問3について、答えがなぜイになるのか分かりません。
> AND 成績表.年度 = 2008がなぜ必要なのでしょうか?

設問3のFROM句に登場する3表のレイアウトは次のとおり。

履歴表(生徒番号,年度,学年,クラス,教員番号)
成績表(生徒番号,年度,試験ID,国語,数学,英語,理科,社会)
教員表(教員番号,氏名,住所,電話番号)

この3表の結合条件式は次のとおりで,

履歴表.生徒番号 = 成績表.生徒番号
履歴表.教員番号 = 教員表.教員番号
履歴表.年度 = 成績表.年度 ★

設問3の行選択条件式は次のとおり。

履歴表.年度 = 2008(または,成績表.年度 = 2008)★
履歴表.学年 = 1

【イ】の 履歴表.年度 = 2008 AND 成績表.年度 = 2008 は
一見すると結合条件式には見えませんが,
「履歴表.年度 = 成績表.年度 で表結合して,年度 = 2008 のみ抽出」
という上記の2つの★印の条件式を別の形式で表したものです。

--------
>あるのとないことでは処理結果にどのような違いがあるのか

例えば,このSQLを2010年度のどこかで実行するとします。
(ある中学生が3学年の時点で,2008年度1学年の成績を表示したい)

【ア】の場合は,2008年度だけでなく,
その生徒の2009年度2学年,2010年度3学年の成績も処理対象になります。
それらすべてが集計されて
2008年度1年次に所属していたクラスの平均点とみなされてしまいます。

--------
> 設問2について、なぜ答えがイになるのでしょうか?

設問2のFROM句に登場する4表のレイアウトは次のとおり。

生徒表(生徒番号,氏名,住所,電話番号)
履歴表(生徒番号,年度,学年,クラス,教員番号)
成績表(生徒番号,年度,試験ID,国語,数学,英語,理科,社会)
試験表(試験ID,試験名)

この4表の結合条件式は次のとおりで,

生徒表.生徒番号 = 履歴表.生徒番号 = 成績表.生徒番号
    (3項目を=で結べないので,2つの式に分けること)
履歴表.年度 = 成績表.年度 ◆
成績表.試験ID = 試験表.試験ID

設問2の行選択条件式は次のとおり。

履歴表.年度 = 2009(または,成績表.年度 = 2009)◆
履歴表.学年 = 1
試験表.試験名 = '2学期中間'

【イ】の 履歴表.年度 = 2009 AND 成績表.年度 = 2009 は
一見すると結合条件式には見えませんが,
「履歴表.年度 = 成績表.年度 で表結合して,年度 = 2009 のみ抽出」
という上記の2つの◆印の条件式を別の形式で表したものです。
2022.11.09 12:55
トマさん 
(No.3)
返信ありがとうございます。
質問なのですが、まず設問3について、なせ2008年度だけでなくその生徒の他の年度まで抽出されるのかがいまいちイメージが湧きません。

それから、"履歴表.年度 = 2008 AND 成績表.年度  =  2008"の部分において、年度が2008年度のものを指定しているようにしか見えないのですが、単に2008年度と指定している条件と同時に表を結合してあるものとで見分け方等はあるのでしょうか?

最後に、設問2の成績表.年度  =  2009はなぜ必要なのでしょうか?なくてもいいように感じます。
2022.11.09 17:11
jjon-comさん 
FE ゴールドマイスター
(No.4)
> 設問3について、なせ2008年度だけでなく
> その生徒の他の年度まで抽出されるのか

履歴表(生徒番号,年度,学年,クラス,教員番号)
成績表(生徒番号,年度,試験ID,国語,数学,英語,理科,社会)
教員表(教員番号,氏名,住所,電話番号)

において,条件式が次の【ア】であるならば

    履歴表.生徒番号 = 成績表.生徒番号
AND 履歴表.教員番号 = 教員表.教員番号
AND 履歴表.年度 = 2008
AND 履歴表.学年 = 1

成績表.年度 は 2008 ではないから。

--------
> 設問2の 成績表.年度 = 2009 はなぜ必要なのでしょうか?

2009年度の成績表を処理の対象にするため。

--------
> 単に2008年度と指定している条件と
> 同時に表を結合してあるものとで見分け方等はあるのでしょうか?

表W.列X = 2008 だけと書かれていたなら結合ではない。2つの表ではないので。

表W.列X = 2008  AND  表Y.列Z = 1998  と書かれていたなら,
表W.列X ≠ 表Y.列Z なのでこれも結合ではない。

表W.列X = 2008  AND  表Y.列Z = 2008  と書かれていたなら,
表W.列X = 表Y.列Z なので両表を同じ値で結合しています。
2022.11.09 18:16
トマさん 
(No.5)
解答ありがとうございます!
前の説明とあわせて読み、なんとなくのイメージが湧きました。
結合の見分け方についてもありがとうございます。意外と簡単に見分けられますね。
あとちなみに、スレ主の名前が違いますが、間違って別端末で回答したためです。一応同一人物です。
2022.11.10 11:13

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop