多表查询

MySql 码拜 9年前 (2016-02-09) 1108次浏览
主表
USERINFO表
表列USERID  Name  DEFAULTDEPTID…….等等,其中USERID主索引
11           张三      21
12           李四      22
DEPARTMENTS表
表列 DEPTID   DEPTNAME    ……等等
21             管理部
22            生产部
CHECKINOUT表
表列 USERID        CHECKTIME                                       ……等等
11           2016-03-01  08:00:00
11           2016-03-01  11:00:00
12           2016-03-01   08:00:00
12           2016-03-01   12:00:00
11           2016-03-02   08:00:00
11           2016-03-02   12:00:00
12           2016-03-02   08:00:00
12           2016-03-02   13:00:00
12           2016-03-03   08:00:00
12           2016-03-03   13:00:00
12           2016-03-04   08:00:00
12           2016-03-04   14:00:00
11           2016-03-05   08:00:00
11           2016-03-05   13:00:00
USER_SPEDAY表
表列  USERID    DATEID   STARTSPECDAY  ENDSPECDAY
11              1          2016-03-03    2016-03-05
12              3          2016-03-05    2016-03-05
LeaveClass表
表列  LeaveId   LeaveName
1             事假
2             病假
LeaveClass1表
表列  LeaveId   LeaveName
3            公出
查出  2016-03-01到2016-03-05 想得到的结查,最好能一次查询,因上面只是例子,最好能把查询结果保存到临时表,想要的结果
姓名 部门     时间                  记录                                                                                            记录2
张三 管理部   2016-03-01     2016-03-01  08:00:00,2016-03-01  11:00:00
李四  生产部   2016-03-01    2016-03-01   08:00:00,2016-03-01   12:00:00
张三 管理部   2016-03-02    2016-03-02   08:00:00,2016-03-01   12:00:00
李四  生产部   2016-03-02    2016-03-02   08:00:00,2016-03-02   13:00:00
张三 管理部   2016-03-03                                                                                                          事假
李四  生产部   2016-03-03    2016-03-03   08:00:00,2016-03-03   13:00:00
张三 管理部   2016-03-04                                                                                                          事假
李四  生产部   2016-03-04     2016-03-04   08:00:00,2016-03-04   14:00:00
张三 管理部   2016-03-05     2016-03-05   08:00:00,2016-03-05   13:00:00
李四  生产部   2016-03-05                                                                                                         公出
解决方案

40

select u.USERID,u.Name,d.DEPTNAME,date(CHECKTIME), min(CHECKTIME),max(CHECKTIME)
from USERINFO u inner join DEPARTMENTS d on u.DEFAULTDEPTID=d.DEPTID
inner join CHECKINOUT c on u.USERID=c.USERID
group by u.USERID,u.Name,d.DEPTNAME,date(CHECKTIME)

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明多表查询
喜欢 (0)
[1034331897@qq.com]
分享 (0)