平成24年春期午後問3 設問4について

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
情報太郎さん  
(No.1)
https://www.fe-siken.com/kakomon/24_haru/pm03.html
お世話になります。設問4の解答はウで解説を読んでも納得するのですが、エがなぜ排除できるかがわかりません。宜しくお願いします。
2021.05.23 10:29
GinSanaさん 
FE シルバーマイスター
(No.2)
エだと、明細表で注文されたかことがあるかどうかが参照条件ですよね。
ほんとは、where句内でテーブルを結合しているから、INNER JOIN句で結合する(今回なら料理コードか)ようにするのがふつうの書き方なんですが、結合条件にIN句が来る時点でふつうはおかしいです。
2021.05.23 12:17
情報太郎さん  
(No.3)
回答ありがとうございます。INについて少し調べてみましたが、やはり結合条件でINがくるのはおかしいですね。
2021.05.23 14:09
かなさん 
FE ブロンズマイスター
(No.4)
この投稿は投稿者により削除されました。(2021.05.24 13:56)
2021.05.24 13:56
かなさん 
FE ブロンズマイスター
(No.5)
「select * from 料理表, 明細表」を実行すると、
料理コード|料理名    |単価|精算コード  |料理コード|皿数
0001      ..|ごはん   . |100 .|03100186 ゙ ゙|0001      ..|1
0002      ..|肉じゃが  |280 .|03100186 ゙ ゙|0002      ..|1

はもちろん出ますが、それ以外にも
料理コード|料理名    |単価|精算コード  |料理コード|皿数
0001      ..|ごはん   . |100 .|03100186 ゙ ゙|0002      ..|1
0002      ..|肉じゃが  |280 .|03100186 ゙ ゙|0001      ..|1
も出てしまいます(直積結合)

そこから後者のように料理表.料理コードと明細表.料理表が異なるものを除外するための文が
>where 料理表.料理コード = 明細表.料理表
なのです。

これがないエでは、後者の意味不明な行も計算に含めてしまうため、不適切と判断できます。
2021.05.24 14:03
情報太郎さん  
(No.6)
ありがとうございます。
2021.05.31 21:57

返信投稿用フォーム

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

その他のスレッド


Pagetop