Скажите, что у меня есть это предложение выбора:
SELECT ut.user_id,
a.firstname,
a.surname,
u.username,
u.email_address
FROM administrators a
JOIN user_types ut JOIN users u ON a.admin_id = ut.type_id
AND u.user_id = ut.user_id AND ut.user_type = 'ADMIN';
Скажем, я хотел обновить ВСЕ значения в строке, где user_id = 1;
Я мог бы обновить КАЖДУЮ ТАБЛИЦУ индивидуально ИЛИ я мог бы создать представление так:
CREATE OR REPLACE VIEW full_admin AS
SELECT ut.user_id,
a.firstname,
a.surname,
u.username,
u.email_address
FROM administrators a
JOIN user_types ut
JOIN users u on a.admin_id = ut.type_id
AND u.user_id = ut.user_id
AND ut.user_type = 'ADMIN'
Тогда я мог бы написать:
UPDATE full_admin
SET firstname = 'blah', etc, etc
WHERE user_id = 1;
И это обновит все строки во всех таблицах
Есть ли способ сделать это БЕЗ создания представления?
Что-то вроде:
UPDATE (
SELECT ut.user_id,
a.firstname,
a.surname,
u.username,
u.email_address
FROM administrators a
JOIN user_types ut
JOIN users u ON a.admin_id = ut.type_id
AND u.user_id = ut.user_id
AND ut.user_type = 'ADMIN'
)
AS temp_table
SET firstname = "ALEX"
WHERE user_id = 1;
Однако это не работает