Child 表总和别名错误

Child tables sum alias error

A parent table:负载 和 2 child tables:发票 & 付款。 全部链接在 Load_id。 获取每次加载的所有发票和付款的总和。

这给了我错误:[Err] 1054 - 'on clause'

中的未知列 'I.Load_Id'
SELECT L.Load_Id,
I.Invoice_Total,
P.Payment_Total
FROM Loads AS L

LEFT OUTER JOIN
(
SELECT 
SUM(Invoice_Total) AS Invoice_Total
FROM invoices
GROUP BY Load_Id
) AS I
ON I.Load_Id = L.Load_Id

LEFT OUTER JOIN
(
SELECT 
SUM(Amount) AS Payment_Total
FROM Payments
GROUP BY Load_Id
) AS P
ON P.Load_Id = L.Load_Id

这也给我错误:[Err] 1054 - 'on clause'

中的未知列 'I.Load_Id'
SELECT Loads.Load_Id,
I.Invoice_Total,
P.Payment_Total
FROM Loads 

LEFT JOIN
(
SELECT 
SUM(Invoice_Total) AS Invoice_Total
FROM invoices
GROUP BY Load_Id
) AS I
ON I.Load_Id = Loads.Load_Id

LEFT JOIN
(
SELECT 
SUM(Amount) AS Payment_Total
FROM Payments
GROUP BY Load_Id
) AS P
ON P.Load_Id = Loads.Load_Id

我尝试了很多变体,但显然我不明白。

您没有在您的子查询中 selecting 任何名为 Load_Id 的字段,并且 mySQL 正在抱怨这一点。你已经按它分组了,所以只需要像下面的查询一样select它,这样你就可以加入它了。

SELECT L.Load_Id,
I.Invoice_Total,
P.Payment_Total
FROM Loads AS L

LEFT OUTER JOIN
(
SELECT 
SUM(Invoice_Total) AS Invoice_Total, Load_Id
FROM invoices
GROUP BY Load_Id
) AS I
ON I.Load_Id = L.Load_Id

LEFT OUTER JOIN
(
SELECT 
SUM(Amount) AS Payment_Total, Load_Id
FROM Payments
GROUP BY Load_Id
) AS P
ON P.Load_Id = L.Load_Id