DATE_ADD не работает

У меня есть три таблицы в MySQL. Персонал с полями id, имя, фамилия, телефон, адрес, id_work.

Работа с полями id, name.

Отсутствие с полями id, name, id_staff start_date и duration.

У меня есть следующий запрос:

   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 ())

Я хочу изучить случай существующих сотрудников, которые не отсутствовали, и случай существующих сотрудников, которые имели отсутствие, но на сегодня это не является приограммой. Основная концепция заключается в том, что этот запрос возвращает сотрудников компании, которая присутствует.
Моя проблема в том, что человек, у которого всего два случая, например один был на 7/7/2017, а продолжительность была на 10 дней, а другая на 19/8/2017, а продолжительность на 5 дней, запрос возвращает количество () = 1, что неправильно. Я хочу отображать количество () = 0, потому что сегодня этот работник присутствует на своей работе

0

Решение

OR DATE_ADD(a.start_date, INTERVAL a.duration DAY) < NOW ()
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')

но это не имеет смысла, так как первое условие отменяется вторым, и я не совсем понимаю, чего вы хотите достичь

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector