gpt4 book ai didi

Php如何在同一列中获得UNION结果

转载 作者:行者123 更新时间:2023-11-29 18:58:17 25 4
gpt4 key购买 nike

我需要你的帮助,我有两个表销售和购买,我的要求是如果月份相同,则在同一列中获得销售和购买结果。我正在使用下面的代码。

<?php
$stmt = $db->prepare("SELECT SUM(amount) as amount,
DATE_FORMAT(saledate,'%M %Y') as saledate,
null as recovery
FROM `advertisercv` GROUP BY DATE_FORMAT(saledate, '%M %Y')
UNION all
SELECT null,
DATE_FORMAT(date,'%M %Y') as date,
SUM(amount)
FROM `paymentsrec`
GROUP BY DATE_FORMAT(date, '%M %Y')");
?>

结果:

S.No    Month      Sale     Recovery
1 April-2016 10000
2 April-2016 4000
2 January-2017 5000
3 January-2017 3000

预期结果是:

S.No    Month      Sale     Recovery
1 April-2016 10000 4000
2 January-2017 5000 3000

最佳答案

通过使用左连接,您可以匹配两个表中的行。我建议使用左联接,因为第一个表中的行可能在第二个表中没有匹配的行。下面的查询将显示advertisecv 中的所有行以及 paymentrec 中匹配行的总计。 if 函数用零替换缺失的行数据,以便 sum 函数正常工作。

我还添加了一列,作为在不同表中的列之间使用联接时可以执行的操作的示例。

SELECT 
DATE_FORMAT(a.`saledate`,'%M %Y') as `saledate`,
SUM(a.`amount`) as `Sale`,
SUM(IF(b.`amount` IS NULL,0,b.`amount`)) as `Recovery`
SUM(a.`amount`) - SUM(IF(b.`amount` IS NULL,0,b.`amount`)) as `Balance Outstanding`
FROM `advertisercv` a
LEFT JOIN `paymentsrec` b
ON DATE_FORMAT(a.`saledate`,'%M %Y) = DATE_FORMAT(b.`saledate`,'%M %Y')
GROUP BY DATE_FORMAT(a.`saledate`,'%Y %m')
ORDER BY DATE_FORMAT(a.`saledate`,'%Y %m')

关于Php如何在同一列中获得UNION结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44026797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com