mysql — SQL / PHP: обновить результат из запроса select

Я пытался заставить это работать навсегда сейчас, и я не могу заставить его работать. Мне нужно обновить столбец в моей таблице туров, если в таблице tours_reservations меньше 8 резервирований, когда тур будет на следующей неделе. У меня есть оператор выбора, который дает мне желаемый результат (тур, который необходимо обновить), но я не знаю, как обработать этот результат в моем заявлении об обновлении. Вот мое утверждение выбора:

$date = new DateTime("+ $starting days");
$day = $date->format('Y-m-d');

$this->db->query("SELECT t.t_id, t.name, t.status, COUNT( r.reservation_id ) AS c
FROM tours t
JOIN tours_reservations r ON t.t_id = r.tour_id
WHERE DAY =  '$day'
GROUP BY t.t_id
HAVING COUNT( c ) <=8");

При этом я получаю все события, которые начинаются через 7 дней и имеют 8 или менее бронирований. Таблица туров имеет поле статуса, которое будет обновлено до «отменено». Как мне обработать это в запросе на обновление? Любая помощь будет принята с благодарностью.

Заранее спасибо.

0

Решение

Предполагая, что ваш первоначальный запрос правильный.

$query = $this->db->query("SELECT t.t_id, t.name, t.status, COUNT( r.reservation_id ) AS c
FROM tours t
JOIN tours_reservations r ON t.t_id = r.tour_id
WHERE DAY =  ?
GROUP BY t.t_id
HAVING COUNT( c ) <=8", array($day));

foreach ($query->result() as $row)
{
$this->db->query("UPDATE tours SET status = 'cancelled' WHERE t_id = ? ", array($row->t_id));
}

Также добавлен параметр привязки.

Изменить: есть лучшие способы сделать это, конечно, без выполнения обновления в цикле.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]