| ■No69462 (WebSurfer さん) に返信 > ■No69459 (スライム さん) に返信 >>2013/12/27(Fri) 14:50:14 編集(投稿者) >> >>データベースのデータの中身は■No69456 で示した通りです。 >> >>すみません。 >> WHERE K1.Rev <= @REV になってました。 > > 一番最初の質問では、 > > WHERE K1.Rev = @REV > > となっていたのを、後から > > WHERE K1.Rev <= @REV > > に変更しませんでしたか? > > そういうことをされると話の流れがおかしくなって、後からこのスレッドを読む人 > にとって、わけが分からなくなってしまうのですが。
すみません、誤記がありました。
最初 WHERE K1.Rev < @REV だったものを、shu さんの指摘を受けて 後で WHERE K1.Rev <= @REV に直したのですよね。
--------------------------------------------------------------------
それはともかくとして、
■No69461 (スライム さん) に返信 > @REV=10 の場合 > ┌──┬──┐ > │Num │Rev │ @Rev=10に該当 > ├──┼──┤ ↓ > │ 5│ 20│×× > │ 4│ 10│×○ → TOP(1) で取得 → ON DK1.Name = T1.Name > │ 2│ 5│○○ に該当しないのでnullになる > │ 1│ 1│○○ > │ 3│ 1│×○ > └──┴──┘ > ↑ > ON DK1.Name = T1.Nameに該当 > > と、いうことですよね? > ON DK1.Name = T1.Name で > 既にはじかれるのかと思ってたのですが
は思い違いで、
SELECT TOP(1) ... WHERE K1.Rev <= @REV ORDER BY K1.Rev DESC の結果、
4, "bbb", 2, "./file/bbb-002.xls",10
となるので、
SELECT T1.Name, ... FROM [MyMaster].[dbo].T1 LEFT OUTER JOIN 上記結果(4, "bbb", 2, "./file/bbb-002.xls",10)
は、
"aaa", NULL, NULL, NULL, NULL, NULL "bbb", 4, "bbb", 2, "./file/bbb-002.xls",10
となって、WHERE T1.Name = 'aaa' の条件で、
"aaa", NULL, NULL, NULL, NULL, NULL
という結果になったのだと思います。
> LEFT OUTER JOIN ( > SELECT TOP(1) D1.Num, D1.Name, D1.Ver, D1.URL, K1.Rev > FROM [MyMaster].[dbo].D1 > LEFT OUTER JOIN [MyMaster].[dbo].K1 ON K1.Num = D1.Num > WHERE K1.Rev <= @REV > D1.Name = T1.Name ←これを追加 > ORDER BY K1.Rev DESC > ) AS DK1 ON DK1.Name = T1.Name
文法的におかしいかと思いますが。 |