我正在编写一个用Laravel 5.2编写的项目,该项目有两个表,需要查询这两个表以生成按年创建的记录数摘要。下面是该架构的简化布局与一些样本数据:Laravel 5.2中的MySQL摘要查询
事项表
id created_at
-----------------
1 2016-01-05 10:00:00
2 2016-03-09 11:00:00
3 2017-01-03 10:00:00
4 2015-05-06 11:00:00
说明表
id created_at
-----------------
1 2015-07-08 10:00:00
2 2016-03-16 11:00:00
3 2017-09-03 10:00:00
4 2017-11-06 11:00:00
每个表都有几十万条记录,所以我想成为能够(有效地)查询我的数据以产生以下结果,每个表的计数按年份计算:
year matters notes
----------------------------
2015 1 1
2016 2 1
2017 1 2
我需要每列可排序。目前,我能想到的做到这一点,最快的方法就是有两个查询,如以下内容,然后通过PHP结合两种结果:
SELECT YEAR(matters.created_at) AS 'year', COUNT(1) AS 'matters'
FROM matters
GROUP BY YEAR(matters.created_at)
SELECT YEAR(notes.created_at) AS 'year', COUNT(1) AS 'notes'
FROM notes
GROUP BY YEAR(notes.created_at)
但我不知道是否有更好的方法,特别是因为我必须根据用户的需求对每列进行排序。
有什么想法?
谢谢!这正是我所期待的。我忘记了你可以加入格式化为一年的日期。谢谢! – BakerStreetSystems