問題ID:19652について
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
問題ID:19652について
msg# 1
yamadanbira
投稿数: 10
解説が「完全外部結合であるため」とという書き方しかされていなかったので、イマイチ理解出来ていません。
・c.category,category_name,の下にNULLが付くのか。
・prod_nameの下にNULLが2つ付くのか(1つなら分かります)
この2点が分かりません。
c.categoryは6行まででありその続きはないはずですし、prod_nameも5行までなのでc.categoryと結合するならば、NULLは1つのはずと解釈しています。
上記2点についてどなたかご教授ください。
・c.category,category_name,の下にNULLが付くのか。
・prod_nameの下にNULLが2つ付くのか(1つなら分かります)
この2点が分かりません。
c.categoryは6行まででありその続きはないはずですし、prod_nameも5行までなのでc.categoryと結合するならば、NULLは1つのはずと解釈しています。
上記2点についてどなたかご教授ください。
Re: 問題ID:19652について
msg# 1.1
jdnbj
投稿数: 1
>c.categoryは6行まででありその続きはないはずですし、
6行目までです。
>prod_nameも5行までなのでc.categoryと結合するならば、NULLは1つのはずと解釈しています。
prod_name(prod表)は6行目まであり、prod_idが6の行が最終行です。
これをふまえて完全外部結合で表示させると回答の通りになるのかと思います。
6行目までです。
>prod_nameも5行までなのでc.categoryと結合するならば、NULLは1つのはずと解釈しています。
prod_name(prod表)は6行目まであり、prod_idが6の行が最終行です。
これをふまえて完全外部結合で表示させると回答の通りになるのかと思います。
Re: 問題ID:19652について
msg# 1.1.1
yamadanbira
投稿数: 10
返信ありがとうございます。
ですが、やはりNULLが付く理由が分かりません。
prod_nameのNULL2行はc.categoryに合わせて表示されていると考えると納得はいきますが、c.categoryが6行迄しかないはずなのに、その下に何故NULLが入るのか分からないです…
ですが、やはりNULLが付く理由が分かりません。
prod_nameのNULL2行はc.categoryに合わせて表示されていると考えると納得はいきますが、c.categoryが6行迄しかないはずなのに、その下に何故NULLが入るのか分からないです…
Re: 問題ID:19652について
msg# 1.2
yokoyama68
投稿数: 28
長文失礼いたします
結合の種類についてあいまいになっているようです
簡単にまとめます
・内部結合 デフォルトの結合、左右のテーブルで同じ項目を結合する
・外部結合 特殊な結合、左右のテーブルで結合失敗したものも結果を返す
左側外部結合 左側のテーブルをすべて返す
右側外部結合 右側のテーブルをすべて返す
完全外部結合 両方のテーブルをすべて返す
・左テーブルのCATEGORY(6項目)
10
20
30
40
50
60
・右テーブルのCATEGORY(6項目)
10
20
30
40
50
(NULL) ※これも項目です
個々のケースで結果を記載します(項目が多いのでCATEGORYのみ)
・内部結合(結果 5行) ※結合成功したもののみ
10
20
30
40
50
・左側外部結合(結果 6行) ※左テーブルは成功失敗関係なくすべて(失敗の相手先項目はNULL)
10
20
30
40
50
60 この行は右テーブルと結合失敗
・右側外部結合(結果 6行) ※右テーブルは成功失敗関係なくすべて(失敗の相手先項目はNULL)
10
20
30
40
50
(NULL) この行は左テーブルと結合失敗
・完全外部結合(結果 7行) ※左右テーブルの成功失敗関係なくすべて(失敗の相手先項目はNULL)
10
20
30
40
50
60 この行は左テーブルから、右テーブルと結合失敗
(NULL) この行は右テーブルから、左テーブルと結合失敗
以上です
結合の種類についてあいまいになっているようです
簡単にまとめます
・内部結合 デフォルトの結合、左右のテーブルで同じ項目を結合する
・外部結合 特殊な結合、左右のテーブルで結合失敗したものも結果を返す
左側外部結合 左側のテーブルをすべて返す
右側外部結合 右側のテーブルをすべて返す
完全外部結合 両方のテーブルをすべて返す
・左テーブルのCATEGORY(6項目)
10
20
30
40
50
60
・右テーブルのCATEGORY(6項目)
10
20
30
40
50
(NULL) ※これも項目です
個々のケースで結果を記載します(項目が多いのでCATEGORYのみ)
・内部結合(結果 5行) ※結合成功したもののみ
10
20
30
40
50
・左側外部結合(結果 6行) ※左テーブルは成功失敗関係なくすべて(失敗の相手先項目はNULL)
10
20
30
40
50
60 この行は右テーブルと結合失敗
・右側外部結合(結果 6行) ※右テーブルは成功失敗関係なくすべて(失敗の相手先項目はNULL)
10
20
30
40
50
(NULL) この行は左テーブルと結合失敗
・完全外部結合(結果 7行) ※左右テーブルの成功失敗関係なくすべて(失敗の相手先項目はNULL)
10
20
30
40
50
60 この行は左テーブルから、右テーブルと結合失敗
(NULL) この行は右テーブルから、左テーブルと結合失敗
以上です
Re: 問題ID:19652について
msg# 1.2.1
yamadanbira
投稿数: 10
丁寧なご説明ありがとうございます。
改めて表を見直しcategoryの部分は理解致しました。
category_name,prod_nameのNULLに関しては、結合したcategoryに行を合わせるため表示されているという事でしょうか?
改めて表を見直しcategoryの部分は理解致しました。
category_name,prod_nameのNULLに関しては、結合したcategoryに行を合わせるため表示されているという事でしょうか?
Re: 問題ID:19652について
msg# 1.2.1.1
yokoyama68
投稿数: 28
前回の書き込みの内容でテーブルの左右が逆になっておりましので
書き込みを修正しておきました 失礼しました
左テーブル:category
右テーブル:prod
です
SELECTの定義が以下のため、
「SELECT c.category, c.name category_name, p.name prod_name」
各項目は左右のテーブルから以下のように参照されます
CATEGORY 結合キー(左右両方から)
CATEGORY_NAME 左テーブルから
PROD_NAME 右テーブルから
結合失敗したデータの項目は以下のように埋められます
※左テーブルのCATEGORY:60のケース ※右テーブルと結合失敗したため右テーブルの項目は(NULL)になる
CATEGORY 60 左テーブルから
CATEGORY_NAME stationary 左テーブルから
PROD_NAME (NULL) 結合失敗のためNULLになる
※右テーブルのCATEGORY:(NULL)のケース ※左テーブルと結合失敗したため左テーブルの項目は(NULL)になる
CATEGORY (NULL) 右テーブルから この(NULL)は元の値がNULLということです
CATEGORY_NAME (NULL) 結合失敗したためNULLになる
PROD_NAME (NULL) 右テーブルから この(NULL)は元の値がNULLということです
以上です
書き込みを修正しておきました 失礼しました
左テーブル:category
右テーブル:prod
です
SELECTの定義が以下のため、
「SELECT c.category, c.name category_name, p.name prod_name」
各項目は左右のテーブルから以下のように参照されます
CATEGORY 結合キー(左右両方から)
CATEGORY_NAME 左テーブルから
PROD_NAME 右テーブルから
結合失敗したデータの項目は以下のように埋められます
※左テーブルのCATEGORY:60のケース ※右テーブルと結合失敗したため右テーブルの項目は(NULL)になる
CATEGORY 60 左テーブルから
CATEGORY_NAME stationary 左テーブルから
PROD_NAME (NULL) 結合失敗のためNULLになる
※右テーブルのCATEGORY:(NULL)のケース ※左テーブルと結合失敗したため左テーブルの項目は(NULL)になる
CATEGORY (NULL) 右テーブルから この(NULL)は元の値がNULLということです
CATEGORY_NAME (NULL) 結合失敗したためNULLになる
PROD_NAME (NULL) 右テーブルから この(NULL)は元の値がNULLということです
以上です
Re: 問題ID:19652について
msg# 1.2.1.1.1
yamadanbira
投稿数: 10
度々ありがとうございます。
この問題に関してのNULLについては理解致しました。
この問題に関してのNULLについては理解致しました。