2012-01-06 20 views
0

私はいつも複数の結合に巻き込まれているようです。私は部品番号を含むこれらのテーブルを持っています、そして、それらの部品番号の記述は12テーブルにわたって広がっています(私はそれについて何もできません)。だから私は必要な部品番号だけを選択して、それらのテーブルのうちの12個すべてを元のクエリと結びつけて説明を得たいと思っていました。複数のテーブルにわたる最初のクエリへの複数の結合

結果は、コンデンサの最初のテーブルの説明だけが結合されることになります。残りの部分は紛失してしまい、コンデンサをコメントにしてコネクタをつくることができます。リストの下では、一度に1つしか取得できません。

SQLでこれを行う方法はありますか?または私はボートを逃している。あなたが与えることができる任意のアドバイスを

 cmd.CommandText = "WITH PARTS AS("; 
     cmd.CommandText += "SELECT *, ROW_NUMBER() OVER (ORDER BY p.PART_NUMBER) AS 'RowNumber' FROM dbo.AllParts AS p"; 
     cmd.CommandText += ")"; 
     cmd.CommandText += "SELECT * FROM PARTS as p " 
     + "INNER JOIN dbo.[Component Manufacturer Parts] AS a ON p.RowID = a.PartGUID " 
     + "INNER JOIN dbo.[Manufacturer Part Info] AS b ON a.ManufacturerGUID = b.RowID " 
     + "LEFT Join dbo.[CAPACITORS] as caps ON caps.RowID = p.RowID " 
     + "LEFT Join dbo.[Connectors] as cons ON cons.RowID = p.RowID " 
     + "LEFT Join dbo.[Crystals and Oscillators] as xtal ON xtal.RowID = p.RowID " 
     + "LEFT Join dbo.[Diodes] as dio ON dio.RowID = p.RowID " 
     + "LEFT Join dbo.[ICs] as ics ON ics.RowID = p.RowID " 
     + "LEFT Join dbo.[Inductors] as ind ON ind.RowID = p.RowID " 
     + "LEFT Join dbo.[Misc] as mis ON mis.RowID = p.RowID " 
     + "LEFT Join dbo.[Relays] as rel ON rel.RowID = p.RowID " 
     + "LEFT Join dbo.[Resistors] as res ON res.RowID = p.RowID " 
     + "LEFT Join dbo.[Switches] as swi ON swi.RowID = p.RowID " 
     + "LEFT Join dbo.[Transformers] as tra ON tra.RowID = p.RowID " 
     + "LEFT Join dbo.[Transistors] as xfrm ON xfrm.RowID = p.RowID "      
     + "WHERE RowNumber Between @low AND @high AND p.PART_NUMBER LIKE 'CT%'"; 

ありがとう:

は、ここに私のコードです。

+0

説明欄のそれぞれに異なる別名を使用して、希望の項目を明示的にselect句に含めることを試みましたか? – Atonewell

答えて

1

最初の左結合が2番目の左結合と一致するものを返さないため、機能しない理由があります。

大きなユニオン内のすべてのテーブルの説明が表示されます。それはかなり醜いですが、確かにクエリする方が簡単でしょう。

+0

すごくうれしかったよ! –

関連する問題