2012-08-12 25 views
1

我不斷收到錯誤的和值,當我加入3個表選擇SUM。 下面是表的ERD的PIC:(此處原文:http://dl.dropbox.com/u/18794525/AUG%207%20DUMP%20STAN.png從多個表

​​

下面是該查詢:

select SUM(gpCutBody.actualQty) as cutQty , SUM(gpSewBody.quantity) as sewQty 
from jobOrder 
inner join gpCutHead on gpCutHead.joNum = jobOrder.joNum 
inner join gpSewHead on gpSewHead.joNum = jobOrder.joNum 
inner join gpCutBody on gpCutBody.gpCutID = gpCutHead.gpCutID 
inner join gpSewBody on gpSewBody.gpSewID = gpSewHead.gpSewID 
+4

以何種方式是錯?它應該是什麼呢?如果你能夠顯示你有什麼數據你的表格和正確的結果應該是什麼,這將是有幫助的。 – 2012-08-12 10:37:17

回答

3

如果你是感興趣在裁員的數量和縫製的所有訂單,最簡單的方式做這將是這樣的:

select (select SUM(gpCutBody.actualQty) from gpCutBody) as cutQty, 
     (select SUM(gpSewBody.quantity) from gpSewBody) as sewQty 

(這假定削減和SEWS總會有相關的工作訂單)

如果你想看到削減的擊穿和工作秩序縫製,這樣的事情可能是最好:

select joNum, SUM(actualQty) as cutQty, SUM(quantity) as sewQty 
from (select joNum, actualQty, 0 as quantity 
     from gpCutBody 
     union all 
     select joNum, 0 as actualQty, quantity 
     from gpSewBody) sc 
group by joNum 
3

馬克的做法是一個很好的一個。我想建議在工會之前做一個團體的替代方案,因爲這可能是一種更一般的方法來進行多維度總結。

你的問題是,你必須要總結沿兩個維度,而你的加入得到的值的積。

select joNum, act.quantity as ActualQty, q.quantity as Quantity 
from (select joNum, sum(actualQty) as quantity 
     from gpCutBody 
     group by joNum 
    ) act full outer join 
    (select joNum, sum(quantity) as quantity 
     from gpSewBody 
     group by joNum 
    ) q 
    on act.joNum = q.joNum 

(我一直馬克的假設,即通過joNum這樣做是所需的輸出。)