假設我在固定表中有兩個公司1和公司2。每個公司有兩個項目(項目1-1和項目1-2屬於公司1,項目2-1和項目2-2屬於公司2)。同樣,每個項目都有兩項費用(共8項費用)。我想列出所有公司,項目總預算和這些公司的總支出。 SQL查詢(對於mysql)是什麼樣的?沒有重複的Sql總和
公司表有兩個字段(idfirm和name)。項目表有四個字段(idproject,name,budget和firm_idfirm作爲外鍵)。最後費用表有三個字段(idexpense,數量和project_idproject爲外鍵引用項目表的idproject場。)
首先我想這個查詢
select firm.name as Firm, sum(project.budget) as Project, sum(expense.amount) as Expense
from firm, project, expense
where firm.idfirm = project.firm_idfirm and project.idproject = expense.project_idproject
group by firm.name;
但其結果顯示每家企業的支出這筆款項正確,但每個公司的預算總額不是。看起來預算是重複的。任何建議?
同意幾乎完全:我會包括''在GROUP BY' firm.idfirm'。當然,如果'firm.name'應該是唯一的,那就沒有必要了。 –
@AndriyM - 不,你說得對,我很怠惰,只是從SELECT子句中複製非聚集。作爲一個原則問題,必須按維度表的PK進行分組。 – MatBailie