Php 我的工资表SQL查询

Php 我的工资表SQL查询,php,mysql,Php,Mysql,我在MYSQL中有3个表,来自运行在同一服务器上的2个不同数据库 我的预期产出是 我的查询尝试是 SELECT `biometric`.`Empid`, ,`name`,`location`,`basic`,`hra`,`conveyance`,`total salary`,sum(DISTINCT DATEDIFF(LEAST(`endDate`,'$monthEnd' ),GREATEST(`startdate`,'$monthStart'))+1) as leaves FROM `bi

我在MYSQL中有3个表,来自运行在同一服务器上的2个不同数据库

我的预期产出是

我的查询尝试是

SELECT `biometric`.`Empid`,
,`name`,`location`,`basic`,`hra`,`conveyance`,`total salary`,sum(DISTINCT DATEDIFF(LEAST(`endDate`,'$monthEnd' ),GREATEST(`startdate`,'$monthStart'))+1) as leaves FROM `biometric`.`biometric`,`biometric`.`employee` JOIN `lms`.`leaves` WHERE `biometric`.`empid`= `employee`.`empid` AND `employee`.`empid` = `leaves`.`id` AND  
`startdate`<='$monthEnd' AND `endDate`>= '$monthStart' AND `leaves`.`status` = '3'
GROUP BY `Empid`
选择“生物识别”。`Empid`,
“姓名”、“地点”、“基本”、“hra”、“交通工具”、“工资总额”、“总和”(不同日期差异(最小('endDate','monthEnd')、最大('startdate','monthStart'))+1)作为“生物识别”中的休假。“生物识别”、'biometric`.'employee`加入'lms`.'leaves`在其中'biometric`.'empid`='employee`.'empid`.'
`开始日期“=”$monthStart”和“离开”。“'status`='3'
按“Empid”分组`
此处状态=3为已批准休假,1为未批准休假。 我的出局就要开始了


提前感谢…

您可以尝试下面的查询,即使我没有测试它,所以如果您遇到任何错误,您可以创建一个SQLFIDLE,以便我可以更正它

基本概念是,您需要为lms.leaves表使用left join,因为您需要所有员工的详细信息,即使他们没有在状态3下休假

SELECT bmt.`Empid`,`name`,`location`,`basic`,`hra`,`conveyance`,`total salary`,
IFNULL(SUM(DISTINCT DATEDIFF(LEAST(`endDate`,'$monthEnd' ),GREATEST(`startdate`,'$monthStart'))+1),0) AS LEAVES 
FROM BM.`biometric` AS bmt
JOIN BM.`employee` AS emp ON bmt.`empid`= emp.`empid`
LEFT JOIN `lms`.`leaves` AS lvs ON emp.`empid` = lvs.`id` AND lvs.`status` = '3' AND `startdate`<='$monthEnd' AND `endDate`>= '$monthStart' 
GROUP BY bmt.`Empid`;
选择bmt.`Empid`、`name`、`location`、`basic`、`hra`、`transportation`、`total salary`、,
IFNULL(SUM(DISTINCT DATEDIFF(最小(`endDate`,'$monthEnd')、最大(`startdate`,'$monthStart'))+1),0)作为叶子
来自BM.“生物识别”作为bmt
加入BM.`employee`作为bmt上的emp.`empid`=emp.`empid`
左连接'lms'。'leaves'作为emp上的lvs。'empid`=lvs。'id`和lvs。'status`='3'和'startdate`='monthStart'
按bmt分组。`Empid`;

您的where子句中有
休假
状态='3',因此只有已批准休假的员工才会进入您的输出,其他员工不会进入。。。(删除此条件或左连接到树叶表)使用更新的查询抱歉,我没有检查您是否使用树叶表中的日期。。。。。