我有两个表,比如员工和加入日期。现在我想根据员工ID加入两个表,但我想显示完整的员工列表,无论是否注册了加入日期......这里是两个表
Employee
John
Paul
George
Ringo
DOJ
21/05/1998
23/02/2006
分别为John,Paul,George,Ringo分别为1,2,3,4
我需要将两个表连接起来,George和Ringo的值可以为null但我主要担心的是我应该能够过滤DOJ。请看下面。
SELECT e.empName, d.DOJ, e.empId
FROM employee AS e
LEFT JOIN doj AS d ON e.empId = d.empId
WHERE d.doj BETWEEN STR_TO_DATE('27/04/2000', '%d/%m/%Y')
AND STR_TO_DATE('27/04/2014', '%d/%m/%Y'))
现在,当我运行此查询时,我获得了按日期过滤的所有记录,但我需要所有员工姓名,而不仅仅是由where子句过滤的那些(doj为null,我可以替换为"不可用&# 34)。我希望mysql中有一个完整的外连接选项。
答案 0 :(得分:0)
尝试这个未经测试的查询:
SELECT e.empName, d.DOJ, e.empId
FROM employee AS e
left JOIN doj AS d ON e.empId = d.empId
and d.doj between STR_TO_DATE('27/04/2000', '%d/%m/%Y')and STR_TO_DATE('27/04/2014', '%d/%m/%Y')and STR_TO_DATE('27/04/2014', '%d/%m/%Y'))
答案 1 :(得分:0)
我猜你在查询中做的一切都与你的情况有关。 根据您的条件,结果将在2000年4月27日至2014年4月27日之间 所以如果日期值为" NULL"它不会被展示。
在没有该日期条件的情况下尝试相同的查询,您可能会得到结果。