繁体   English   中英

合并2使用日期选择查询,然后合并2个表

[英]Combining 2 Select queries using dates and then Joining 2 Tables

我曾尝试加入我的查询,但在周日时间遇到了麻烦,

我有一个非常基本且直接的联接查询,可以计算员工的所有工作时间,正常时间和加班时间,并且该查询可以完美地运行,但是当我想参加星期日时间时,一切都变得很麻烦。

完整查询,无星期日时间:-

SELECT
`empl_attendance`.`employee_id`,
`employee`.`employee_surname`,
`employee`.`employee_first_name`,
`employee`.`employee_second_name`,
FORMAT((IF(SUM...some basic maths...)),1) AS nt,
FORMAT((...some basic maths...),1) AS ot,
FORMAT((...some basic maths...),1) AS total
FROM
`empl_attendance`
WHERE
 (`empl_attendance_date` BETWEEN '$start_date' AND '$end_date')
INNER JOIN 
`employee` 
ON `empl_attendance`.`employee_id`=`employee`.`employee_id` 
GROUP BY `employee_id`

但是我需要结合以下查询,该查询基本上可以计算每位员工的总星期日工作时间。 该查询本身可以正常工作,我只是在努力将两个查询组合在一起:

SELECT SUM(`empl_attendance_total`) AS sundays
FROM `empl_attendance`
WHERE
(`empl_attendance_date` BETWEEN '$start_date' AND '$end_date')
AND
WEEKDAY(`empl_attendance_date`) > 5
GROUP BY `employee_id`

谢谢

周杰伦

您可以使用case语句执行此操作:

 SELECT  ea.`employee_id`, e.`employee_surname`,  e.`employee_first_name`,  e.`employee_second_name`,
         FORMAT((IF(SUM...some basic maths...)),1) AS nt,
         FORMAT((...some basic maths...),1) AS ot,
         FORMAT((...some basic maths...),1) AS total,
         sum(case when weekday(ea.empl_attendance_date) > 5 then ea.empl_attendance_total end) as SundayTotal
 FROM empl_attendance ea join
      employee e
      ON ea.`employee_id = e.employee_id
  WHERE  ea.empl_attendance_date BETWEEN '$start_date' AND '$end_date'
  GROUP BY `employee_id`  

我假设以FORMAT开头的行正在寻找非星期日日期,或者如果需要的话,至少要包括它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM