我有两个表上(daily_book和extra_cost),这样的结构是LEFT JOIN给出不正确的总和结果
daily_book
db_id | refund
1 | 7161
2 | 5980
extra_cost
ec_id | db_id | cost
1 | 1 | 156
2 | 1 | 123
3 | 2 | 100
4 | 2 | 120
所以我得到总退款金额和总成本值。
所以我的查询是
$sql = "SELECT SUM(d.refund) AS refund, SUM(e.cost) AS e_cost FROM `daily_book` d LEFT JOIN extra_cost e ON (d.db_id = e.db_id) WHERE d.db_id > 0";
我得到的结果是26282退款和499的总成本;这是不正确的。
我想要的结果是13,141退款和499总成本。
你也可能得到一些http://dba.stackexchange.com/宝贵帮助 – zack6849
你应该更加熟悉SQL连接的工作原理然后再继续聚合函数,如'sum()'。如果您从查询中删除了聚合函数调用,则会在JOIN结果中看到重复的行,从而为您提供意外的退款总额。 – faintsignal