Php 如何从两个子表中求和
这是我第一次在这里发帖,我希望我没有做错什么 我确实用sum得到了错误的结果,因为我不知道如何以正确的方式编写查询 我有三个表,第一个是主表,两个相同的子表。 子表用于支出和收入 表预测Php 如何从两个子表中求和,php,mysql,navicat,Php,Mysql,Navicat,这是我第一次在这里发帖,我希望我没有做错什么 我确实用sum得到了错误的结果,因为我不知道如何以正确的方式编写查询 我有三个表,第一个是主表,两个相同的子表。 子表用于支出和收入 表预测 id forecast_id 1 721 2 721 3 721 餐桌费用 forecast_id amount tax_free 721 100 0 721 200 1 721
id forecast_id
1 721
2 721
3 721
餐桌费用
forecast_id amount tax_free
721 100 0
721 200 1
721 300 0
表收入
forecast_id amount tax_free
721 50 1
721 100 0
SELECT
t_forecast.forecastID,
Sum(t_fc_einkauf.betrag) AS expense,
Sum(t_fc_zahlung.betrag) AS income
FROM
t_forecast
JOIN t_fc_einkauf ON t_fc_einkauf.forcastID = t_forecast.forecastID
JOIN t_fc_zahlung ON t_fc_zahlung.forcastID = t_forecast.forecastID
WHERE
t_forecast.forecastID = 855
ORDER BY
我的结果是错误的
forcastID expense income
855 1200 450
应该是
forcastID expense income
855 600 150
您使用的联接会创建叉积行,因此得到的总和比预期的要高。请尝试使用相关子查询
SELECT
DISTINCT f.forecast_id,
(SELECT SUM(e.amount) FROM expense e WHERE e.forecast_id = f.forecast_id )
AS expense,
(SELECT SUM(i.amount) FROM income i WHERE i.forecast_id = f.forecast_id )
AS income
FROM
forecast f
WHERE
f.forecast_id = 721
@用户3629556如果有效,则读取