gpt4 book ai didi

mysql - Amchart 中的 MYSQL PDO JOIN 问题

转载 作者:行者123 更新时间:2023-11-29 09:36:51 24 4
gpt4 key购买 nike

当我尝试在 amchart 图表条中显示数据时,我遇到 MYSQL PDO JOIN 问题。

当 JOIN 为 LEFT 时,返回的数据来 self 的表 1 (ventas),当 JOIN 为 RIGHT 时,返回的数据来 self 的表 2 (compras),但我需要显示两者按月分组的 UNION。

这是我的代码:

$sql = $conn->prepare("SELECT 
SUM(V.total) AS totalVM, //total amount in table 1
DATE_FORMAT(V.f_rventa, '%M de %Y') AS grapNM, //date in table 1
SUM(C.total) AS totalCM, //total amount in table 2
DATE_FORMAT(C.f_compra, '%M de %Y') AS grapNM //date in table 2
FROM VENTAS V RIGHT JOIN COMPRAS C //HERE WHEN I CHANGE LEFT OR RIGHT IS THE ISSUE
ON MONTH(V.f_rventa) AND YEAR(V.f_rventa) = MONTH(C.f_compra) AND YEAR(C.f_compra)
GROUP BY MONTH(C.f_rventa) ASC, MONTH(C.f_compra) ASC");
$sql->execute();
while($row = $sql->fetch(PDO::FETCH_ASSOC)) {
$totalVM = $row['totalVM'];
$totalCM = $row['totalCM'];
$grapNM = $row['grapNM'];

$ventGast[] = array("MES"=>$grapNM, "ventas"=>$totalVM, "compras"=>$totalCM);

}

这里有一个捕获:

表1:

table 1 ventas

表2:

table 2 compras

最佳答案

您没有在连接条件中正确比较每月和每年。您需要明确检查月(日期)=月(其他日期)和年(日期)=年(其他日期):

ON MONTH(V.f_rventa) = MONTH(C.f_compra) AND YEAR(V.f_rventa) =  YEAR(C.f_compra)

请注意,您的分组代码也是错误的 - 您将包含 f_rventa 的表别名为 V,而不是 C。

GROUP BY MONTH(V.f_rventa) ASC, MONTH(C.f_compra) ASC

完整查询:

SELECT 
SUM(V.total) AS totalVM,
DATE_FORMAT(V.f_rventa, '%M de %Y') AS grapNM,
SUM(C.total) AS totalCM,
DATE_FORMAT(C.f_compra, '%M de %Y') AS grapNM
FROM VENTAS V left JOIN COMPRAS C
ON MONTH(V.f_rventa) = MONTH(C.f_compra) AND YEAR(V.f_rventa) = YEAR(C.f_compra)
GROUP BY MONTH(V.f_rventa) ASC, MONTH(C.f_compra) ASC

SQLFiddle带有示例数据。

关于mysql - Amchart 中的 MYSQL PDO JOIN 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57422185/

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