簡體   English   中英

從一個表中獲取所有數據,而另一個表為空並且還應用where子句

[英]Getting all data from one table, while another table is empty and where clause is also applied

兩張表:員工和薪水

我從員工獲得的所有記錄,即使工資表是通過使用LEFT JOIN空的,但是當我用薪金表,它不會讓我所有的員工。

我如何獲取所有員工記錄?

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`

第二個表上的條件需要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`

否則,您會將外部聯接轉換為內部聯接。

您的查詢中的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`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM