обновить таблицу на основе значения других таблиц (4 таблицы) в MySQL - PullRequest
0 голосов
/ 06 мая 2018

у меня 4 стола

Первая таблица: клиент (его записи о 2000-х годах)

ID      province      regency     district
1       CJ            SE          T district
2       CJ            SE          G district
3       CJ            SE          B district
.....

Второй стол: провинция

ID      province      province_id
1       CJ            33        
2       WJ            32         
3       EJ            31         
.....

Третий стол: регентство

ID      regency        province_id
3301    SE city        33        
3302    SE regency     33         
3303    SK city        33         
3304    SK regency     33         
.....

Четвертый стол: район

ID      district       regency_id
3301    T district     3301        
3302    G district     3301         
3303    A district     3302         
3304    B district     3302         
.....

Я бы хотел обновить клиента в регентстве, поэтому результат будет таким, как показано ниже. Я уже использую update с inner join и т. Д., Но мне не нужно никакого результата.

ID      province      regency      district
1       CJ            SE city      T district
2       CJ            SE city      G district
3       CJ            SE regency   B district
.....

Я использовал этот запрос, но он не работает вообще. Результат ничто

UPDATE customer
inner JOIN province ON customer.province = province.`name` 
inner join district on customer.district = district.`name`
SET customer.regency = regencie.`name` 
WHERE
    customer.regency = province.`name` 
    AND customer.district = district.`name`

Большое спасибо. Поправьте меня, если был пост с похожей проблемой, которая уже решена.

1 Ответ

0 голосов
/ 06 мая 2018

Если вы хотите обновить с JOIN, вы можете попробовать это.

ОБНОВЛЕНИЕ [таблица]

ПРИСОЕДИНИТЬСЯ [таблица] ...

SET [col] = [col1]

Где ...

UPDATE customer c 
inner join province p on p.province = c.province
inner join regency r on r.province_id = p.province_id
SET c.regency = r.regency

SQLFIDDLE: http://sqlfiddle.com/#!9/3b0cb6/1

EDIT

Из вашего комментария нужно join на district ссылку на таблицу по

вот так.

UPDATE customer c 
inner join province p on p.province = c.province
inner join regency r on r.province_id = p.province_id
inner join district d on d.regency_id = r.ID
SET c.regency = r.regency
where c.district = d.district

sqlfiddle: http://sqlfiddle.com/#!9/5dc7b2/1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...