Php MySQL每月生成员工姓名的年度报告
我有两个用户表和登录表 用户表Php MySQL每月生成员工姓名的年度报告,php,mysql,sql,phpmyadmin,Php,Mysql,Sql,Phpmyadmin,我有两个用户表和登录表 用户表 id Name status ---------------------- 1 Johan 1 2 Smith 1 . . . . ---------------------- 登录表 id user_id login_date hours ------------------------------------- 1 1 20
id Name status
----------------------
1 Johan 1
2 Smith 1
. . . .
----------------------
登录表
id user_id login_date hours
-------------------------------------
1 1 2017-01-01 8
2 1 2017-01-02 7
3 2 2017-01-03 12
4 2 2017-01-02 10
. . . .
-------------------------------------
我们是否可以获取如下数据
index user_id name Jan Feb Mar .... Dec Total
---------------------------------------------------------
1 1 Johan 100 120 115 .... 120 455
1 2 Smith 100 110 120 .... 110 440
. . . . . . . .
---------------------------------------------------------
我们已经使用PHP/MYSQL完成了这项工作,但需要花费大量时间来处理和执行。我们是否可以直接从MySQL获取此信息?我不知道什么是
索引,但其余的是连接、分组方式和条件聚合:
select u.id, u.name,
sum(case when month(l.login_date) = 1 then hours else 0 end) as jan,
sum(case when month(l.login_date) = 2 then hours else 0 end) as feb,
. . .,
sum(hours)
from users u join
login l
on u.id = l.login_id
where l.login_date >= '2017-01-01' and l.login_date < '2018-01-01'
group by u.id, u.name;
选择u.id、u.name、,
截至1月的总和(如果月份(l.login_date)=1,则小时数为0),
总和(如果月份(l.login_date)=2小时,否则0小时结束)为2月,
. . .,
总数(小时)
来自你加入的用户
登录名l
on u.id=l.login\u id
其中l.login_日期>='2017-01-01'和l.login_日期<'2018-01-01'
按u.id、u.name分组;
注:
- 日期比较使用
=
和我不知道索引是什么,但其余的是联接、分组依据和条件聚合:
select u.id, u.name,
sum(case when month(l.login_date) = 1 then hours else 0 end) as jan,
sum(case when month(l.login_date) = 2 then hours else 0 end) as feb,
. . .,
sum(hours)
from users u join
login l
on u.id = l.login_id
where l.login_date >= '2017-01-01' and l.login_date < '2018-01-01'
group by u.id, u.name;
选择u.id、u.name、,
截至1月的总和(如果月份(l.login_date)=1,则小时数为0),
总和(如果月份(l.login_date)=2小时,否则0小时结束)为2月,
. . .,
总数(小时)
来自你加入的用户
登录名l
on u.id=l.login\u id
其中l.login_日期>='2017-01-01'和l.login_日期<'2018-01-01'
按u.id分组,u.name;
注:
<> LI>日期比较采用<代码> > <代码> >代码>所以输入是右的。YUP,我们将通过一年。认真考虑应用程序代码中的数据显示问题(PHP,在这种情况下),因此输入年是正确的。YUP,我们将通过一年。认真考虑应用程序代码中的数据显示问题(PHP,在这种情况下)