繁体   English   中英

SQL SERVER 2008-联接

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM