使用where子句条件在mysql中连接两个表

时间:2014-07-17 12:34:26

标签: mysql

我有两个表,比如员工和加入日期。现在我想根据员工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中有一个完整的外连接选项。

2 个答案:

答案 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"它不会被展示。

在没有该日期条件的情况下尝试相同的查询,您可能会得到结果。