gpt4 book ai didi

mysql - 第一个 JOIN 上的 SELECT 值不存在

转载 作者:行者123 更新时间:2023-11-29 22:41:23 25 4
gpt4 key购买 nike

我想按类别获取当月的当前总销售额。我还想显示所有 category_name (包括汽车)即使 item_id其中category_id不存在于我的 sales_tbl 上或者给出 0.00 美元的销售额,例如..

category_name  |  subTotalSales_ofMonth
---------------------------------------
appliances | 33 000
cars | 0
IT | 150 000

运行这个

SELECT
c.category_name,
SUM(amount) AS subTotalSales_ofMonth
FROM sales_tbl sa
INNER JOIN item_out_tbl io
ON io.item_id=sa.item_id
INNER JOIN category_tbl c
ON io.category_id=c.category_id
WHERE MONTH(sa.date_sold) >= $month)
GROUP BY io.category_id

给我

category_name  |  subTotalSales_ofMonth
---------------------------------------
appliances | 33 000
IT | 150 000

最佳答案

您需要使用外部联接。由于所有类别都存储在 category_tbl 表中,因此该表应该位于联接的外侧。实现此目的的一种方法是更改​​连接顺序并在这两种情况下使用 LEFT JOIN 。您还需要将 WHERE 条件移至 ON 子句之一:

SELECT
c.category_name,
SUM(amount) AS subTotalSales_ofMonth
FROM
category_tbl AS c
LEFT JOIN item_out_tbl AS io ON io.category_id = c.category_id
LEFT JOIN sales_tbl AS sa ON io.item_id = sa.item_id
AND MONTH(sa.date_sold) >= $month
GROUP BY
c.category_id
;

关于mysql - 第一个 JOIN 上的 SELECT 值不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29326826/

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