2016-07-19 20 views
0

必要なデータを取得するために結合しようとしている3つのテーブルがあります。ここで彼らは351個の値があるので、私はこれらの3つのテーブルで行うことですしようとしているものをSQL Server 2008 - 結合

*TblComp*  *TblCompParent*   *tblCompProcesses* 
CompID   CompBillingID   CompID 
CompBillingID  Capacity1    CompProcessID 
        Capacity2 

....

Select tblCompParent.Capacity1, tblCompParent.Capacity2, CompProcessID 

私の問題はtblCompでは、この...です...です - 私はtblCompとtblCompparentに入社し、tblCompparent.capacity1、tblcompparent.capacity2を選択することから始め、クエリが...このようになります

SELECT dbo.tblComp.CompID, dbo.tblCompParents.Capacity1, dbo.tblCompParents.Capacity2 
FROM dbo.tblCompParents INNER JOIN 
dbo.tblComp ON dbo.tblCompParents.CompBillingID = dbo.tblComp.CompBillingID 

そして、これが正常に動作し、私が引っ張ってtblCompProcessに参加しようとすると、それはですCompP rocessIDは私が580レコードのようになったときです。私はtblCompprocessでcompIDごとに1つだけCompProcessIDを選択するために何をする必要があるのか​​分かりません。

私はtblCompを使用しなければならないと思われます。それ以外の場合、tblCompProcessに参加する方法はありません。

EDIT1:

SELECT dbo.tblComp.CompID, dbo.tblCompParents.Capacity1, dbo.tblCompParents.Capacity2, tblCompProcess.compprocessID 
FROM dbo.tblCompParents INNER JOIN 
dbo.tblComp ON dbo.tblCompParents.CompBillingID = dbo.tblComp.CompBillingID 
Inner Join dbo.tblCompprocess on tblCompProcess.CompID = tblComp.CompID 
+1

あなたはあなたが使用している正確なsqlを表示してください。 2つの結合を持つ結合を1つの結合だけで見る必要があります。 – Hogan

+1

はい、選択リストにフィールドを含めなくても、3つのテーブルをすべて結合する必要があります。 –

+0

@hogan edit – user6576015

答えて

1

私が起こっている内容を正確に把握していないので、あなたは私たちの全体のデータ・モデルを示していないが、明らかtblCompProcessesはあなたの参加で複数の行を持っています。私はこれをこのように修正します:

+0

tblCompProcessから何も選択しなかった場合、どうすればいいですか? – user6576015

+1

@ user6576015もう一度、結合されたテーブルから列を選択するかどうかにかかわらず、結果は同じですが、そこから何も選択していない場合は、なぜそれに結合していますか?有効なデータ理由があるかもしれませんが、それは今のところ明らかではありません。 –

+0

もしあなたが**他の列を選択しているのであれば?その場合、それらをサブクエリに追加するだけです。 – Hogan