[英]SQL several inner joins cause wrong SUM Result
我的數據庫示例:(底部的 SQLFiddle 鏈接)
我有幾個表:
表登錄
餐桌商務
ID_Login_ID_Business (int)
公司名稱 (varchar)
姓名聯系人(varchhar)
ID_Location_FK (int)
ID_BalancesheetInput_FK (int)
ID_資產負債表輸出(整數)
表ID_資產負債表輸入
身份證
FK_Business_ID (int)
資源名稱 (varchar50)
金額(十進制)
Unit_Fk (int)
TypeOfRessource_FK(int)
表單位
單位編號
單位
表類型資源
ID_類型
類型
Sql 應該檢查來自 Buisness 的所有條目,其中 ID_Login_ID_Business(fk) 等於 BalancesheetInput 中的 FK_Business_ID,用相同的 RessourceNam,e 對所有金額求和,並且應該簡單地添加 typeofRessource 檢查正確的單位。
示例:
餐桌商務
ID, NameOfCompany, ID_BalancesheetInput_FK
表資產負債表輸入
ID、FK_Business_ID、資源名稱、金額、Unit_FK、TypeOFRessource_FK
表單位
單位 ID,單位
表類型OF資源
ID_Type, 類型
以下語句嘗試捕獲所選業務的資源並計算具有相同名稱的條目,例如電力。 他們屬於一個公司,但出了點問題。
每次我使用我的 sql 語句時:
"SELECT DISTINCT "
. "BalancesheetInput.RessourceName AS Rn, "
. "Units.Unit AS En, "
. "SUM(BalancesheetInput.Amount) AS TotalAmount "
. "FROM Business"
. "INNER JOIN BalancesheetInput ON FK_Business_ID = 1 "
. "INNER JOIN Units ON Unit_FK = Unit_ID "
. "INNER JOIN TypeOfRessource ON TypeOf Ressources = 2 "
. "GROUP BY BalancesheetInput.RessourceName ");
結果:
輕質燃料油 60 kWh 能源 - 電力 600 kWh 能源 - 熱能 2100 kWh
看起來他添加了每行的 6 倍。
我想要的結果是:
輕質燃料油 10 kWh 能源 - 電力 100 kWh 能源 - 熱能 350 kWh
這是一個 SQLFiddle ,其中包含所有這些的工作版本。
如果您需要更多信息,只需說出您需要什么來幫助我解決問題。
它有助於為表使用別名。 還要在字段上創建適當的連接,而不是連接應該在 where 子句中的值。
最好確保 GROUP BY 包含您在選擇中使用的所有字段(忽略函數中使用的字段)。
尤其是在使用 MySql 時。
SELECT
bs.RessourceName AS Rn,
u.Unit AS En,
SUM(bs.Amount) AS TotalAmount
FROM Business b
INNER JOIN BalancesheetInput bs ON bs.FK_Business_ID = b.ID
INNER JOIN Units u ON u.Unit_ID = bs.Unit_FK
INNER JOIN TypeOfRessource t ON t.ID_Type = bs.TypeOFRessource_FK
WHERE b.NameOfCompany = 'Apples'
AND bs.RessourceName = 'electricity'
GROUP BY bs.RessourceName, u.Unit
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.