@Richard_Ferlow
Веб-программист

Как удалить записи начиная с определенной даты до даты, где тип данных иной?

У меня таблица mysql id(int), date_work(datetime), date_type(int), manager_id(int) - сюда заносятся данные о рабочих днях и типах этого дня(рабочий ли день или отпуск или праздник).

Получается если отпуск 7 дней подряд - то будет 7 записей с датой следующей друг за другом. 8 дней(т.е. следующий день после отпуска) будет рабочим и date_type у него будет другой, либо же последняя запись в таблице будет принадлежать последнему дню отпуска, т.к. дальше еще не назначали график.

Задача такая - допустим я хочу "удалить" отпуск из базы, но заранее не зная сколько записей он занимает.
Т.е. нужно что-то вроде - выбрать записи начиная с определенной даты и до той даты, где date_type(тип даты) будет другой. Не могу чего-то придумать как это сделать.

Можно конечно сделать предварительный запрос получив записи и пройдясь по ним циклом, определить "крайнее" число и после ясно будет что удалять, но хотелось бы понять можно ли это одним запросом решить.
  • Вопрос задан
  • 661 просмотр
Решения вопроса 1
@CHolfield
delete from tablename 
where (date_work => startdate 
and date_work < (select top 1 date_work from tablename 
where date_work > startdate and date_type <> otpusktype order by date_work))

Замените startdate на дату первого дня в формате datetime, otpusktype на значение соответствующее отпуску. Прошу прощения не сразу нормальный запрос отослался, айпад выключился внезапно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы