Mysql 同一时间段内雇佣的员工
当我试图查看两名员工是否在同一时间段内工作时,我的查询逻辑遇到了奇怪的困难 我有一个employees表,其中包含员工id(emp_id)及其(开始日期)和(结束日期),这两种日期类型都存储为“yyy-mm-dd” 我的问题是(E1开始于2006-08-27,结束于2009-05-14,E2开始于2007-01-13,结束于2008-06-25,换句话说,他们在同一时间段内工作):Mysql 同一时间段内雇佣的员工,mysql,sql,datetime,inner-join,where-clause,Mysql,Sql,Datetime,Inner Join,Where Clause,当我试图查看两名员工是否在同一时间段内工作时,我的查询逻辑遇到了奇怪的困难 我有一个employees表,其中包含员工id(emp_id)及其(开始日期)和(结束日期),这两种日期类型都存储为“yyy-mm-dd” 我的问题是(E1开始于2006-08-27,结束于2009-05-14,E2开始于2007-01-13,结束于2008-06-25,换句话说,他们在同一时间段内工作): 选择* 来自员工e1、员工e2 其中e1.emp_ID='1'和e2.emp_ID='2' e1.start_Da
选择*
来自员工e1、员工e2
其中e1.emp_ID='1'和e2.emp_ID='2'
e1.start_Date=e2.end_Date;
如果我翻动两个员工ID,它不会返回任何信息?我的逻辑缺失了一些东西,但我正在努力寻找。感谢您的时间和帮助。如果我没有弄错,您只需修正逻辑,正确检查雇佣期是否重叠:
select e1.emp_id emp_id_1, e2.emp_id emp_id_2
from employees e1
inner join employees e2
on e1.start_date <= e2.end_date and e1.end_date >= e2.start_date
where e1.emp_id = 1 and e2.emp_id = 2
选择e1.emp\u id emp\u id\u 1、e2.emp\u id emp\u id\u 2
来自员工e1
内部连接员工e2
在e1.start_日期=e2.start_日期
其中e1.emp_id=1和e2.emp_id=2
注:
- 使用标准的显式连接(使用
关键字),而不是老式的隐式连接(在on
子句中使用逗号)from
- 它看起来像
是一个数字,因此应该这样对待它(在文本值周围没有单引号)emp_id
在这里不是一个好选择:这是一个自连接,因此列名在结果集中是不明确的;务必枚举select*
子句中的列并为其别名select
select e1.emp_id emp_id_1, e2.emp_id emp_id_2
from employees e1
inner join employees e2
on e1.start_date <= e2.end_date and e1.end_date >= e2.start_date
where e1.emp_id = 1 and e2.emp_id = 2