Update полей в разных таблицах в одном запросе
Есть 2 связанных таблицы:
CREATE TABLE rooms
(
id INT NOT NULL AUTO_INCREMENT,
room_status INT NOT NULL,
room_price INT,
delete_time DATE,
PRIMARY KEY (id)
);
CREATE TABLE bookings
(
id INT NOT NULL AUTO_INCREMENT,
room_id INT NOT NULL,
user_id INT NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
delete_time DATE,
PRIMARY KEY (ID),
FOREIGN KEY (room_id) REFERENCES rooms (id),
FOREIGN KEY (user_id) REFERENCES users (id)
);
Мне необходимо реализовать обновление поля delete_time в обеих таблицах в едином запросе по room_id. Я придумал такой запрос:
update rooms r, bookings b
set r.delete_time = sysdate(), b.delete_time = sysdate()
where r.id = 7 and r.id = b.room_id;
И он отлично работает, если на комнату есть хотя бы одно бронирование. Но В случае, если бронирований на комнату нет, мне надо просто обновлять поле delete_time у комнаты. Как это можно реализовать?
Ответы (1 шт):
Автор решения: Fat-Zer
→ Ссылка
Можно просто сделать LEFT JOIN:
UPDATE rooms AS r
LEFT JOIN bookings AS b ON r.id = b.room_id
SET r.delete_time = sysdate(), b.delete_time = sysdate()
WHERE r.id = 7;