gpt4 book ai didi

c# - 条件从使用 LEFT JOIN 的查询中排除行

转载 作者:行者123 更新时间:2023-11-30 22:14:33 24 4
gpt4 key购买 nike

我有一个声明,我试图用它来检索员工的完整列表,然后是他们的假期。即使他们没有假期,我也想留住员工。这是我到目前为止的声明;

SELECT emp.em_pplid, emp.em_name
FROM employs emp
LEFT JOIN people ppl ON emp.em_pplid = ppl.pp_id
LEFT JOIN empwork ew ON emp.em_pplid = ew.ew_pplid
WHERE emp.em_deptid = ?
AND ppl.pp_employee = ?
AND emp.em_type < ?
AND ew.ew_from > ?
ORDER BY emp.em_name"

正是 AND ew.ew_from = ? 删除了 empwork 表中没有存储假期的员工。我怎样才能将拥有我想要的部门 ID 的员工表中的所有人员保留在 empwork 表中,即使他们没有假期?

最佳答案

LEFT JOINright 表的条件应该只在ON 子句中指定。当它们不是时,由于 NULL 比较,连接自动转换为 INNER JOIN:

SELECT emp.em_pplid, emp.em_name
FROM employs emp
LEFT JOIN people ppl
ON emp.em_pplid = ppl.pp_id AND ppl.pp_employee = ?
LEFT JOIN empwork ew
ON emp.em_pplid = ew.ew_pplid AND ew.ew_from > ?
WHERE emp.em_deptid = ?
AND emp.em_type < ?
ORDER BY emp.em_name"

关于c# - 条件从使用 LEFT JOIN 的查询中排除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38870460/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com