平成27年秋期 午後問6 データベース
広告
DBさん
(No.1)
平成27年秋期 午後問6 データベース 設3についてですが
答えとして2012-10-01以降、2014-03-31以前とありますがなぜでしょうか?
そもそも2012-10-01以降にしてしまうと最上位部署である「R株式会社」の適用開始年月日である
2006-04-01が最初に取得できないように思えます。
答えとして2012-10-01以降、2014-03-31以前とありますがなぜでしょうか?
そもそも2012-10-01以降にしてしまうと最上位部署である「R株式会社」の適用開始年月日である
2006-04-01が最初に取得できないように思えます。
2021.08.08 22:57
GinSanaさん
★AP プラチナマイスター
(No.2)
AND :年月日 BETWEEN 部署.適用開始年月日 AND 部署.適用終了年月日
ですから、バインド変数に2012年を入れようが2014年を入れようが、R株式会社の行の判定は
2014年は2006年から9999年の間に入りますか?
ってことです。だから、最初に取得できるんです。
もう少し細かいことを言うと、この構文は再帰といいます。
最初に上位部署がNULL、一番トップのをとってきて、
UNION ALLの下のクエリで
部署IDが一番トップのが上位部署になる、つまり二番手のやつをとってきて、
つぎに
部署IDが二番トップのが上位部署になる、つまり三番手のやつをとってきて、
をなくなる(結果セットがNULL)まで繰り返して、それらを結合すると解説で言うところの木構造が再現できるわけです。
は解説にあるとおり表3の結果の元ネタを見れば終了が9999か2014年で
開始が2006年か2012年か2001年で
じゃあバインド変数に2006年か2001年を入れたらどうなるんだろう?ってなるとですよ。
A100の第一本部が取れちゃっておかしくなるんですよ。新が取りたいのに旧も取れちゃまずいよね、ってわけですよ。
ですから、バインド変数に2012年を入れようが2014年を入れようが、R株式会社の行の判定は
2014年は2006年から9999年の間に入りますか?
ってことです。だから、最初に取得できるんです。
もう少し細かいことを言うと、この構文は再帰といいます。
最初に上位部署がNULL、一番トップのをとってきて、
UNION ALLの下のクエリで
部署IDが一番トップのが上位部署になる、つまり二番手のやつをとってきて、
つぎに
部署IDが二番トップのが上位部署になる、つまり三番手のやつをとってきて、
をなくなる(結果セットがNULL)まで繰り返して、それらを結合すると解説で言うところの木構造が再現できるわけです。
>答えとして2012-10-01以降、2014-03-31以前とあるがなぜか
は解説にあるとおり表3の結果の元ネタを見れば終了が9999か2014年で
開始が2006年か2012年か2001年で
じゃあバインド変数に2006年か2001年を入れたらどうなるんだろう?ってなるとですよ。
A100の第一本部が取れちゃっておかしくなるんですよ。新が取りたいのに旧も取れちゃまずいよね、ってわけですよ。
2021.08.08 23:39
DBさん
(No.3)
GinSana
詳しい解説ありがとうございます。
少し勘違いしていた部分もあったため助かりました。
詳しい解説ありがとうございます。
少し勘違いしていた部分もあったため助かりました。
2021.08.09 08:05
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。