从一个表中获取所有数据,而另一个表为空,并且也应用where子句

时间:2017-08-07 19:04:56

标签: php mysql sql

两个表:员工和工资

即使工资表是空的,我也会从员工那里得到所有记录,但是当我在工资表上使用 where 时,它并不能让我全体员工。

如何让所有员工记录???????

SELECT `s`.`basic_salary`,`e`.`name` 
FROM (`employees` as e) 
LEFT JOIN `salaries` as s ON `s`.`employee_id`=`e`.`employee_id` 
WHERE `s`.`session_id` = '19' AND `s`.`month_id` = '7' 
GROUP BY `e`.`employee_id`

2 个答案:

答案 0 :(得分:1)

第二个表的条件需要进入on子句:

SELECT s.`basic_salary`, e.`name` 
FROM `employees` e LEFT JOIN
     `salaries` s
     ON `s`.`employee_id`=`e`.`employee_id` AND
        `s`.`session_id` = '19' AND `s`.`month_id` = '7' 
GROUP BY e.`employee_id`

否则,您将外部联接转换为内部联接。

答案 1 :(得分:0)

您的查询中的WHERE正在取消LEFT JOIN的效果,因为您希望s.session_ids.month_id具有价值。如果您想要的是过滤薪水为空或符合特定条件的员工,您可以尝试:

SELECT `s`.`basic_salary`,`e`.`name` 
FROM (`employees` as e) 
LEFT JOIN `salaries` as s ON `s`.`employee_id`=`e`.`employee_id` 
WHERE (`s`.`session_id` = '19' AND `s`.`month_id` = '7' OR `s`.`employee_id` IS NULL) 
GROUP BY `e`.`employee_id`
相关问题