2

この質問が本当に単純であるが、それが私を夢中にさせ、このサイトからさまざまな解決策を検索(試行および失敗)した場合は、この質問について無知です。

私はSQL2008を使用しており、12個のテーブルから1つのクエリに結果をプルしようとしているので、次のようになります。

DECLARE @RefID nvarchar(10)
SET @RefID = 'test'

SELECT * From 
Table1, 
Table2, 
Table3, 
Table4, 
Table5, 
Table6, 
Table7,
Table8,
Table9,
Table10,
Table11,
Table12

WHERE table1.[RefID] = @RefID
AND Table2.[Ref ID] = @RefID
AND Table3.[Ref ID] = @RefID
AND Table4.[Ref ID] = @RefID 
AND Table5.[Ref ID] = @RefID
AND Table6.[Ref ID] = @RefID 
AND Table7.[Ref ID] = @RefID 
AND Table8.[Ref ID] = @RefID 
AND Table9.[Ref ID] = @RefID 
AND Table10.[Ref ID] = @RefID 
AND Table11.[RefID] = @RefID 
AND Table12.[RefID] = @RefID `

これで問題なく動作し、理解しやすく、1つの行で、私が探していたものとまったく同じすべてのデータが得られます。1つの問題を除いて

レコードがどのテーブルにも存在しない場合、それを無視するか、単にそのテーブルの空白/ null値を指定する代わりに、クエリが失敗し、結果が得られません

どんなアイデアでもよろしくお願いします

TIA

4

2 に答える 2

2

以下も同様に機能するはずです...

select * 
from (select RefID = @RefID) x
left join Table1 t1 on t1.RefID = x.RefID
left join Table2 t2 on t2.RefID = x.RefID
left join Table3 t3 on t3.RefID = x.RefID
left join Table4 t4 on t4.RefID = x.RefID
left join Table5 t5 on t5.RefID = x.RefID
left join Table6 t6 on t6.RefID = x.RefID
left join Table7 t7 on t7.RefID = x.RefID
left join Table8 t8 on t8.RefID = x.RefID
left join Table9 t9 on t9.RefID = x.RefID
left join Table10 t10 on t10.RefID = x.RefID
left join Table11 t11 on t11.RefID = x.RefID
left join Table12 t12 on t12.RefID = x.RefID
于 2012-11-17T00:06:43.637 に答える
0

最初の2つのアイデアが正しくなかったことに気づきました。

Select
  *
From (
  Select 
    @RefID RefID
  ) a
    Left Outer Join
  Table1
    On a.RefID = Table1.RefID
  Table2 
    On a.RefID = Table2.RefID
    Left Outer Join
  Table3
    On a.RefID = Table3.RefID
    Left Outer Join
  Table4
    ...
    Left Outer Join
  Table12
    On a.RefID = Table12.RefID

最初に追加のRefIDが必要ない場合は、次のように置き換えます*Table1.*, Table2.*, ...

于 2012-11-16T23:44:58.127 に答える