连接:使用SUM()时显示的结果不正确,只显示一条记录

时间:2014-09-22 09:01:43

标签: mysql sql database select join

请查看下面的SQL查询

SELECT Client_Portfolio.*, 
Client.Name AS "Client Name", 
Provider.Name AS "Provider Name", 
Initial_Fees.*,
Portfolio.VAT,
Portfolio.Invest_Amount,
Portfolio.Cash_Value,
SUM(Ongoing_Fees.Fee)
FROM Client_Portfolio 
LEFT JOIN Client ON Client.idClient = Client_Portfolio.idClient 
LEFT JOIN Portfolio ON Portfolio.idPortfolio = Client_Portfolio.idPortfolio 
LEFT JOIN Provider ON Provider.idProvider = Portfolio.idProvider 
LEFT JOIN Initial_Fees ON Initial_Fees.idPortfolio = Portfolio.idPortfolio 
LEFT JOIN Ongoing_Fees ON Ongoing_Fees.idPortfolio = Portfolio.idPortfolio
ORDER BY Client_Portfolio.idClient 

此查询会生成不正确的结果,但如果我删除“SUM(Ongoing_Fees.Fee)”部分,则会生成正确的结果。

Ongoing_Fees是一个表格,有些Portfolios可能有Ongoing_Fees,有些则没有。我试图分别对每个投资组合中的总Ongoing_Fees求和,并通过上述查询得到结果。但它出错了..它给了我整个表的Ongoing_Fees总和,整个上面的查询只返回了一行!我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您正在使用不带sum()的汇总函数group by,因此它会为您提供一行。 如果你想得到每组总和的结果,你必须在最后使用group by子句。

从讨论中您可能需要添加

在order by子句之前

group by Portfolio.idPortfolio

这将从选择中为每个idPortfolio提供总和值。

点击此处查看更多信息http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html