Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从两个子表中求和_Php_Mysql_Navicat - Fatal编程技术网

Php 如何从两个子表中求和

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

这是我第一次在这里发帖,我希望我没有做错什么

我确实用sum得到了错误的结果,因为我不知道如何以正确的方式编写查询

我有三个表,第一个是主表,两个相同的子表。 子表用于支出和收入

表预测

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如果有效,则读取