第一个查询 -
SELECT
SUM( IF( rm.rm_msg_type = 'In', rm.messages, 0 ) ) AS `Added`
,SUM( IF( rm.rm_msg_type = 'Out', rm.messages, 0 ) ) AS `Deduct`
,(SUM( IF( rm.rm_msg_type = 'In', rm.messages, 0 ) ) - SUM( IF( rm.rm_msg_type = 'Out', rm.messages, 0 ) )) AS `Actual Credit Balance Client Hold`
FROM `resellers` AS `r`
LEFT JOIN `reseller_msg` AS `rm` ON `rm`.`reseller_id` = `r`.`resellerId`
INNER JOIN `panel_login` AS`p` ON `p`.`s_no` = `r`.`resellerId`
GROUP BY `rm`.`reseller_id`
ORDER BY `r`.`resellerId` DESC
在运行第一个查询时,它会得到这样的正确结果 -
username Added Deduct Actual Credit Balance Client Hold
pankaj123 1000 0 1000
soravgarg 1200 210 990
第二个查询--
SELECT
`r`.`reseller_uname` AS `username`
,SUM( IF( rm.rm_msg_type = 'In', rm.messages, 0 ) ) AS `Added`
,SUM( IF( rm.rm_msg_type = 'Out', rm.messages, 0 ) ) AS `Deduct`
,(SUM( IF( rm.rm_msg_type = 'In', rm.messages, 0 ) ) - SUM( IF( rm.rm_msg_type = 'Out', rm.messages, 0 ) )) AS `Actual Credit Balance Client Hold`
FROM `resellers` AS `r`
LEFT JOIN `reseller_msg` AS `rm` ON `rm`.`reseller_id` = `r`.`resellerId`
INNER JOIN `panel_login` AS`p` ON `p`.`s_no` = `r`.`resellerId`
LEFT JOIN `user_msgs` AS `um` ON `um`.`reseller_id` = `r`.`resellerId`
GROUP BY `rm`.`reseller_id`
ORDER BY `r`.`resellerId` DESC
但是使用第二个查询会得到这样的错误结果 -
username Added Deduct Actual Credit Balance Client Hold
pankaj123 1000 0 1000
soravgarg 7200 1260 5940
在第二个查询中,我仅添加了另一个联接,即
LEFT JOIN `user_msgs` AS `um` ON `um`.`reseller_id` = `r`.`resellerId`
通过在第二个查询中添加此行,它会得到不正确的结果;我们也可以在第二行中看到这一点。
您还可以在此处检查数据库结构 --
最佳答案
将INNER JOIN
更改为LEFT JOIN
SELECT r.reseller_uname AS username,
SUM( IF( rm.rm_msg_type = 'In', rm.messages, 0 ) ) AS Added,
SUM( IF( rm.rm_msg_type = 'Out', rm.messages, 0 ) ) AS Deduct,
(SUM( IF( rm.rm_msg_type = 'In', rm.messages, 0 ) ) - SUM( IF( rm.rm_msg_type = 'Out', rm.messages, 0 ) )) AS `Actual Credit Balance Client Hold`
FROM resellers AS r
LEFT JOIN reseller_msg AS rm ON rm.reseller_id = r.resellerId
LEFT JOIN panel_login AS p ON p.s_no = r.resellerId -- <-- This one
LEFT JOIN user_msgs AS um ON um.reseller_id = r.resellerId
GROUP BY rm.reseller_id
ORDER BY r.resellerId DESC;
关于php - Mysql 在使用带有 SUM 方法和 if 条件的多个联接时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34696737/