応用情報技術者過去問題 平成29年秋期 午後問6  

ヒロさん  
(No.1)
応用情報技術者過去問題 平成29年秋期 午後問6  問3 gの穴埋めですが、
公式解答では、INNER JOIN 仕入明細 USING(仕入番号,仕入明細番号)となっており
ますが、販売明細表と仕入明細表には、同じ名称の属性  仕入番号あります
そちらを使用し、INNER JOIN 仕入明細 USING(仕入番号)ではダメでしょうか?
なぜわざわざ違う名称の属性を使うのでしょうか?
2点教えて頂ければ幸いです
2022.04.12 15:02
ベキオさん 
(No.2)
仕入れ明細テーブルの主キーは仕入番号と仕入れ明細番号です。
内部結合のさいに主キーではないキーで結合すると、
結合結果が重複するレコードがでてきます。
そのため、仕入番号のみではNGです。

もし仮に、質問者さんのおっしゃる通り仕入番号のみで結合した場合、
販売番号|販売明細番号|仕入番号|仕入れ明細番号|.........|単価|仕入番号|...|単価|
101|XXX|999|A101|...|100|999|A101|100
101|XXX|999|A101|...|100|999|B101|100
のように販売明細と仕入れ明細テーブルが結合されます。
(左側が販売明細、右側が仕入れ明細。A101、B101が明細番号)
A101とB101が結合されてしまっているのは、仕入れ明細番号でJOINしてないからです。
つまり、販売明細のレコードが重複します。

これにより、以後の結合も重複していくので、SELECT結果が二重にとれてしまいます。
2022.04.12 16:14
GinSanaさん 
AP プラチナマイスター
(No.3)
仕入明細の主キーは仕入番号と仕入明細番号だから、仕入番号だけだと明細番号の数だけ結合後のレコードができますよ。

>なぜわざわざ違う名称の属性を使うのでしょうか?
ユージング(piyo)って結局は
フロム
hoge
インナージョイン
fuga
オン
hoge.piyo = fuga.piyo
の省略なので、意図は結合条件を一意にしたいだけですね。
2022.04.12 16:15
ヒロさん  
(No.4)
皆様
丁寧に説明頂きありがとうございました
理解しました
内部結合を間違えて理解していたようです
ご指摘ありがとうございました
2022.04.12 17:15

返信投稿用フォーム

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

その他のスレッド


Pagetop