Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 同一时间段内雇佣的员工_Mysql_Sql_Datetime_Inner Join_Where Clause - Fatal编程技术网

Mysql 同一时间段内雇佣的员工

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

当我试图查看两名员工是否在同一时间段内工作时,我的查询逻辑遇到了奇怪的困难

我有一个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_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