Приветствую!
Есть задача: вставить в таблицу данные, если два поля в этой таблице не принадлежат условиям(в таблице есть дата прибытия и выезда и надо чтобы новая запись не могла пересечься с предыдущей по датам)
Я начал с такого кода:
INSERT INTO `occupation`(`id`, `arrival`, `departure`, `clientid`) SELECT 3, '2017-12-4', '2017-12-14', 1 FROM `occupation` WHERE 1
Не понимаю почему, но даже в пустую таблицу он почему-то ничего не добавляет.
В будущем расширил до:
INSERT INTO `occupation`(`id`, `arrival`, `departure`, `clientid`) SELECT ?, ?, ?, ? FROM `occupation` WHERE NOT EXISTS (SELECT * FROM `occupation` WHERE `arrival` >= ? AND `departure` <= ? AND `id` = ?)
Но и этот код, конечно не работает(тем более его надо дополнять, учитывая еще 2 условия с датами, когда одна из дат попадает в промежуток, а вторя лежит вне него).
P.S. Может где-то криво написал, прошу прощения за это... Всем спасибо!
Вот так должно работать
INSERT INTO `occupation` (`id`, `arrival`, `departure`, `clientid`)
SELECT * FROM (SELECT $id, $arrival, $departure, $clientid) as tmp
WHERE NOT EXISTS (
SELECT * FROM `occupation` WHERE `id` = $id AND
($arrival BETWEEN `arrival` AND `departure` OR
$departure BETWEEN `arrival` AND `departure`)
)
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости