[英]SQL SERVER 2008 - joins
我试图加入三个表以获取必要的数据。 他们来了...
*TblComp* *TblCompParent* *tblCompProcesses*
CompID CompBillingID CompID
CompBillingID Capacity1 CompProcessID
Capacity2
所以我想用这三个表做的是...
Select tblCompParent.Capacity1, tblCompParent.Capacity2, CompProcessID
我的问题是...在tblComp中有351个值-因此我首先加入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来拉取CompProcessID时,是当我获得580条记录时。 我不确定我必须在tblCompprocess上进行什么连接才能为每个compID仅选择一个CompProcessID。
似乎我必须使用tblComp,否则我将无法加入tblCompProcess。
编辑1:
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
您没有向我们展示整个数据模型,所以我不知道到底发生了什么,但是显然tblCompProcesses在您的联接中有超过一行。 我会这样修复:
SELECT dbo.tblComp.CompID, dbo.tblCompParents.Capacity1, dbo.tblCompParents.Capacity2, x.compprocessID
FROM dbo.tblCompParents
INNER JOIN dbo.tblComp ON dbo.tblCompParents.CompBillingID = dbo.tblComp.CompBillingID
INNER JOIN (SELECT DISTINCT CompID, compprocessID
FROM dbo.tblCompprocess) X on x.CompID = tblComp.CompID
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.