我在MySQL中有三个表。员工有字段ID,姓名,姓名,电话,地址,id_work。
使用字段ID,名称。
缺少字段ID,名称,id_staff start_date和持续时间。
我有以下查询:
SELECT COUNT(*)
FROM staff s
JOIN work w
ON s.id_work = w.id
LEFT JOIN absence a
ON s.id = a.id_staff AND a.name = 'vacations'
WHERE (w.name='sales manager' AND a.id_staff IS NULL)
OR (w.name='sales manager')
AND (a.start_date>NOW () OR DATE_ADD (a.start_date,INTERVAL a.duration DAY)< NOW ())
我想研究一下现有员工的情况,这些员工没有缺席,而现有员工的情况则缺乏,但这并不是今天的编程。主要概念是此查询返回存在的业务人员。 我的问题是一个人完全有两次堕落,例如一个是11/7/2017,持续时间是10天,另一个是19/8/2017,持续时间是5天,查询返回计数()= 1,这是错误的。我想显示计数()= 0,因为今天这名员工出现在他的工作中
答案 0 :(得分:0)
OR DATE_ADD(a.start_date, INTERVAL a.duration DAY) < NOW ()
答案 1 :(得分:0)
您的条件OR (w.name='sales manager')
添加了w.name = sales Manager
您需要在前两个条件中放置括号的所有情况(我认为)
编辑: 我的意思是这样的
WHERE ((w.name='sales manager' AND a.id_staff IS NULL)
OR w.name='sales manager')
但它没有意义,因为第一个条件被第二个条件否定了,我真的不明白你想要实现什么