INSERT SELECT в ту же таблицу

157
08 декабря 2017, 05:20

Приветствую!
Есть задача: вставить в таблицу данные, если два поля в этой таблице не принадлежат условиям(в таблице есть дата прибытия и выезда и надо чтобы новая запись не могла пересечься с предыдущей по датам)

Я начал с такого кода:

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. Может где-то криво написал, прошу прощения за это... Всем спасибо!

Answer 1

Вот так должно работать

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`)
)
READ ALSO
Скачивание excel файла c сервера php

Скачивание excel файла c сервера php

На сервере есть файлxlsx кодированный в UTF-8 есть скрипт который отдает его на скачивание пользователю, файл скачанный файл при открытии выдает...

187
vk.api файлы парсер

vk.api файлы парсер

Есть парсер файлов с ВКРаботал два месяца, теперь сломался ( API отдает

148
fsockopen или аналог?

fsockopen или аналог?

В общем, я не сильно силен в php и тем более модулей, но встал вопрос что сокеты быстрее curl, по этому хотелось бы узнатьС помощью сокетов можно...

160