Изменение значения столбца если в 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)

Объяснение кода листинга программы

  1. Обновление значения столбца is_rent_now в таблице game.
  2. Внутренний запрос (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: дата и время в настоящее время находятся между датой и временем выдачи в аренду и фактической даты возврата.
  3. Значение переменной is_rent_now изменяется на результат внутреннего запроса.
  4. Условие > 0 используется для того, чтобы обновление происходило только в случае, если внутренний запрос вернул положительное значение (то есть, есть хотя бы одна запись в таблице rent, удовлетворяющая условию).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы