2016-09-18 46 views
0

我從一個podetail表中查詢以下查詢,我一次計算「one」唯一項目的平均價格。我需要創建一個「avgUnitCost」列表。是否有一種方法可以在子查詢中使用此現有查詢來生成avgUnitCost列表?mysql;遍歷一個表並計算avgerage價格

SELECT items.`itemName`, 
     SUM(podetails.`qtyReceived`) AS qtyRcvd, 
     SUM(podetails.`qtyReceived` * podetails.`unitCost`) AS totalUnitCost, 
     SUM(podetails.`qtyReceived` * podetails.`unitCost`)/SUM(podetails.`qtyReceived`) AS avgUnitCost 

FROM podetails, items, purchaseorders 
WHERE purchaseorders.`poID` = podetails.`poID` 
    AND podetails.`itemID` = items.`itemID` 
    AND podetails.`itemID` = 3;> 

回答

0

您在這裏缺少一個GROUP BY聲明。不知道在哪個列完全相同但假設你應該items.itemName

SELECT items.`itemName`, 
    SUM(podetails.`qtyReceived`) AS qtyRcvd, 

    SUM(podetails.`qtyReceived` * podetails.`unitCost`) AS totalUnitCost, 

    SUM(podetails.`qtyReceived` * podetails.`unitCost`)/SUM(podetails.`qtyReceived`) AS avgUnitCost 

FROM podetails JOIN purchaseorders 

ON 
    purchaseorders.`poID` = podetails.`poID` 
JOIN items 

ON 
    podetails.`itemID` = items.`itemID` 

WHERE 
    podetails.`itemID` = 3 

GROUP BY items.`itemName`; 
0

如果你想在avgUnitCost的項目,所有存在於purchaseorders表,下面的查詢組可以幫助你

SELECT items.`itemName`, 
     SUM(podetails.`qtyReceived`) AS qtyRcvd, 
     SUM(podetails.`qtyReceived` * podetails.`unitCost`) AS totalUnitCost, 
     SUM(podetails.`qtyReceived` * podetails.`unitCost`)/SUM(podetails.`qtyReceived`) AS avgUnitCost 

FROM podetails, items, purchaseorders 
WHERE purchaseorders.`poID` = podetails.`poID` 
    AND podetails.`itemID` = items.`itemID` 
    GROUP BY items.`itemID`; 

使用GROUP BY這個小的變化可能會給你預期的結果

+0

這樣做......太棒了..叢林存在!謝謝 –