Изменение значения столбца если в child таблице существуют записи, которые удовлетворяют условие - MySQL
Формулировка задачи:
Всем привет.
Допустим у меня эсть 2 таблицы: Игра и Прокат. В таблице Прокат эсть дата начала проката и дата возврата(конца проката некой игры). В таблице Игра эсть поле В_ПРОКАТЕ_ЛИ_В_ДАННЫЙ_МОМЕНТ(bool). Как сделать, чтобы это поле было TRUE, эсли сегодняшняя дата между датой начала и конца проката, и эсли сейчас нет игры в прокате, то это поле должно быть FALSE. Проверку я сделал, но как менять значение самого поля В_ПРОКАТЕ_ЛИ_В_ДАННЫЙ_МОМЕНТ?
Спасибо.
...where now() between t1.date_of_issue and t1.real_return_date ...
Решение задачи: «Изменение значения столбца если в child таблице существуют записи, которые удовлетворяют условие»
textual
Листинг программы
UPDATE game SET game.is_rent_now = ((SELECT COUNT(*) FROM rent WHERE game.id = rent.game_id AND NOW() BETWEEN rent.date_of_issue AND rent.real_return_date) > 0)
Объяснение кода листинга программы
- Обновление значения столбца
is_rent_now
в таблицеgame
. - Внутренний запрос
(SELECT COUNT(*) FROM rent WHERE game.id = rent.game_id AND NOW() BETWEEN rent.date_of_issue AND rent.real_return_date) > 0
используется для определения количества записей в таблицеrent
, удовлетворяющих условию:game.id = rent.game_id
: запись в таблицеrent
соответствует конкретной записи в таблицеgame
.NOW() BETWEEN rent.date_of_issue AND rent.real_return_date
: дата и время в настоящее время находятся между датой и временем выдачи в аренду и фактической даты возврата.
- Значение переменной
is_rent_now
изменяется на результат внутреннего запроса. - Условие
> 0
используется для того, чтобы обновление происходило только в случае, если внутренний запрос вернул положительное значение (то есть, есть хотя бы одна запись в таблицеrent
, удовлетворяющая условию).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д