mysql - 从数据库的第一个日期到今天获取数据
问题描述
我想按日期对数据进行分组并在图表上查看。这是我的数据示例:
count created_at
----- ----------
5 2020/04/20
4 2020/04/21
3 2020/04/25
9 2020/04/28
我希望我获取的数据像
count created_at
----- ----------
5 2020/04/20
4 2020/04/21
0 2020/04/22
0 2020/04/23
0 2020/04/24
3 2020/04/25
0 2020/04/26
0 2020/04/27
9 2020/04/28
当该日期没有数据时,它将显示 0。你们能帮我如何在 laravel 控制器上获取它吗?
之前谢谢。
解决方案
@Alun 这里是你如何做到这一点的一个例子:
SELECT `dateList`.`Date`,
CASE WHEN `yt`.`date` IS NULL THEN 0
ELSE COUNT(`yt`.`id`)
END AS `amt`
FROM
-- this is the part you can copy/paste
-- to be used to left join in a table of your choice
-- ---------------------------------------------------------------------------------------------------------------------------
(
SELECT DATE(`a`.`Date`) AS `Date`
FROM (
SELECT NOW() - INTERVAL (`a`.`a` + (10 * `b`.`a`) + (100 * `c`.`a`)) DAY AS `Date`
FROM (SELECT 0 AS `a` UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS `a`
CROSS JOIN (SELECT 0 AS `a` UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS `b`
CROSS JOIN (SELECT 0 AS `a` UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS `c`
) AS `a`
WHERE `a`.`Date` BETWEEN '2020-04-01' AND NOW()
) AS `dateList`
-- ---------------------------------------------------------------------------------------------------------------------------
LEFT JOIN `yourTable` AS `yt` ON `dateList`.`Date` = DATE(`yt`.`date`)
GROUP BY `dateList`.`Date`
ORDER BY `dateList`.`Date` ASC
只需yourTable
在此查询中替换您的表名称(相应地修改表中的日期列名称替换yt.date
),这将为您提供该月中每一天的列表,该列表显示该月中没有任何日期的 0价值。
至于在 Laravel 控制器中使用 eloquent 来实现这一点,这可能是可能的,但我不知道你会怎么做。你可以在控制器中使用这个原始 SQL 来完成你想要的。
希望这可以帮助!
推荐阅读
- python - 如何将按钮按下的输出打印到标签?
- c++ - 我无法交出矢量图
c++中带指针的变量 - java - 如何从 Android Studio 中的 FireStore 数据库中获取 if..else 的值?
- javascript - refMedium 返回空字符串。怎么了
- api - 如何将代码从 onOpen with menu 更改为 onEdit
- r - 如何计算条件的 TRUE 值,直到在 R 中找到 FALSE
- mysql - 将 SQL 文件导入 DBeaver
- mongodb - 如何使用 mongoDB 中的 max 和 where 条件在集合中查找输出
- vb.net - 如何刷新从 txt 文件读取的组合框列表
- reactjs - DragItemTypes 不是从“react-data-grid”导出的