mysql - JOIN、WHERE 和 QUERY

标签 mysql

这是代码。它在数据库中没有数据的月份返回具有 0 值的表。完美!

SELECT YEAR(k.miesiace)  as                                    year,
       MONTH(k.miesiace) AS                                    month,
       IFNULL(YEAR(data_zlozenia), YEAR(k.miesiace))           order_year,
       IFNULL(MONTH(data_zlozenia), MONTH(k.miesiace))         order_month,
       IFNULL(MONTHNAME(data_zlozenia), MONTHNAME(k.miesiace)) monthname,
       IFNULL(SUM(zp.cena_netto * ilosc), 0)                   sum
FROM kalendarz k
         LEFT OUTER JOIN zamowienia z
                         on MONTH(z.data_zlozenia) = MONTH(k.miesiace) AND YEAR(z.data_zlozenia) = YEAR(k.miesiace)

         LEFT OUTER JOIN zamowienia_pozycje zp on z.id_ezamowienia = zp.id_ezamowienia

WHERE k.miesiace >= DATE_SUB(now(), INTERVAL 12 MONTH)
  AND k.miesiace <= now()

GROUP BY MONTH(k.miesiace), YEAR(k.miesiace)
ORDER BY YEAR(k.miesiace), MONTH(k.miesiace);

但是当我将这个添加到我的 WHERE 子句时:

AND zp.id_artykulu = 9593

它破坏了我的代码并将输出限制为仅存在数据的月份,而不是所有 12 个月。兄弟我该换什么?

最佳答案

子查询中移动您的zp

SELECT YEAR(k.miesiace)  as                                    year,
       MONTH(k.miesiace) AS                                    month,
       IFNULL(YEAR(data_zlozenia), YEAR(k.miesiace))           order_year,
       IFNULL(MONTH(data_zlozenia), MONTH(k.miesiace))         order_month,
       IFNULL(MONTHNAME(data_zlozenia), MONTHNAME(k.miesiace)) monthname,
       IFNULL(SUM(zp.cena_netto * zp.ilosc), 0)                   sum
FROM kalendarz k
LEFT OUTER JOIN zamowienia z
    on MONTH(z.data_zlozenia) = MONTH(k.miesiace) AND YEAR(z.data_zlozenia) = YEAR(k.miesiace)
LEFT OUTER JOIN 
    (select ilosc, cena_netto, id_ezamowienia from zamowienia_pozycje
        where id_artykulu = 9593) zp on z.id_ezamowienia = zp.id_ezamowienia
WHERE k.miesiace >= DATE_SUB(now(), INTERVAL 12 MONTH)
  AND k.miesiace <= now()
GROUP BY MONTH(k.miesiace), YEAR(k.miesiace)
ORDER BY YEAR(k.miesiace), MONTH(k.miesiace);

关于mysql - JOIN、WHERE 和 QUERY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58910588/

相关文章:

mysql - 线程 "main"java.lang.IncompatibleClassChangeError : Found class org. apache.hadoop.mapreduce.JobContext 中的异常,但接口(interface)是预期的

mysql - 从 C 程序调用 mysql SOURCE 命令

php - 我该怎么做这个查询?

mysql - OPTIMIZE TABLE 后如何保持自增值?

mysql2 gem 支持可更新记录

php - 创建与另一个数据库关联的数据库

mysql - 查询显示两个表中的 0 条记录在连接时具有相同的数据

mysql - MySQL 更新与 View 连接时出现问题

mysql - Codeigniter数据表多行选择不同价格的同一商品

php - sql SELECT 语句中的多个运算符