応用情報技術者過去問題 平成29年秋期 午後問6
広告
ヒロさん
(No.1)
応用情報技術者過去問題 平成29年秋期 午後問6 問3 gの穴埋めですが、
公式解答では、INNER JOIN 仕入明細 USING(仕入番号,仕入明細番号)となっており
ますが、販売明細表と仕入明細表には、同じ名称の属性 仕入番号あります
そちらを使用し、INNER JOIN 仕入明細 USING(仕入番号)ではダメでしょうか?
なぜわざわざ違う名称の属性を使うのでしょうか?
2点教えて頂ければ幸いです
公式解答では、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結果が二重にとれてしまいます。
内部結合のさいに主キーではないキーで結合すると、
結合結果が重複するレコードがでてきます。
そのため、仕入番号のみでは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
の省略なので、意図は結合条件を一意にしたいだけですね。
>なぜわざわざ違う名称の属性を使うのでしょうか?
ユージング(piyo)って結局は
フロム
hoge
インナージョイン
fuga
オン
hoge.piyo = fuga.piyo
の省略なので、意図は結合条件を一意にしたいだけですね。
2022.04.12 16:15
ヒロさん
(No.4)
皆様
丁寧に説明頂きありがとうございました
理解しました
内部結合を間違えて理解していたようです
ご指摘ありがとうございました
丁寧に説明頂きありがとうございました
理解しました
内部結合を間違えて理解していたようです
ご指摘ありがとうございました
2022.04.12 17:15
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。