|
分類:[データベース全般]
2013/12/27(Fri) 14:51:52 編集(投稿者)
以下のようなデータベースが既に存在しています。
==T1== Name aaa bbb
==D1== Num Name Ver Url 1, "aaa, 1, "./file/aaa-001.xls" 2, "aaa, 2, "./file/aaa-002.xls" 3, "bbb, 1, "./file/bbb-001.xls" 4, "bbb, 2, "./file/bbb-002.xls" 5, "bbb, 3, "./file/bbb-003.xls"
==K1== Num Rev 1, 1 2, 5 3, 1 4, 10 5, 20
以下のSQLにおいて、 ※1は取得できますが、※2は取得できません。 どうしてでしょう?
※1 DECLARE @REV INT SET @REV = 9 ←@REV = 9 はOK DECLARE @Name varchar(10) SET @Name = 'aaa' SELECT T1.Name, DK1.Num, DK1.Name, DK1.Ver, DK1.Url, DK1.Rev FROM [MyMaster].[dbo].T1 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 ORDER BY K1.Rev DESC ) AS DK1 ON DK1.Name = T1.Name WHERE T1.Name = 'aaa'
※2 DECLARE @REV INT SET @REV = 10 ←@REV = 10 はNG DECLARE @Name varchar(10) SET @Name = 'aaa' SELECT T1.Name, DK1.Num, DK1.Name, DK1.Ver, DK1.Url, DK1.Rev FROM [MyMaster].[dbo].T1 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 ORDER BY K1.Rev DESC ) AS DK1 ON DK1.Name = T1.Name WHERE T1.Name = 'aaa'
1行目以外他は同じSQL文です。
|