Обновите поля в таблице MySQL, если поля в нескольких таблицах совпадают

У меня четыре стола. Первый содержит список добровольцев, второй — список сайтов, а третий — список проектов. Строка проекта — это просто ссылка на волонтера и сайт с идентификатором и дополнительным столбцом под названием sector.

Все три таблицы являются производными от четвертой таблицы, которая называется устаревшей. Мне нужно извлечь поле из каждой строки устаревшей таблицы в столбце с именем sector и поместить его в столбец sector для соответствующей строки в таблице проектов.

Чтобы знать, что у меня есть правильная строка в таблице legacy при обновлении таблицы projects, мне нужно сопоставить столбцы firstname и фамилия от добровольцев и столбцы имя, муниципалитет и провинция от сайтов с соответствующими столбцами в устаревшей версии.

Я думаю, что мой запрос должен выглядеть примерно так:

UPDATE projects, legacy
  SET
    projects.sector = legacy.sector,    
  WHERE (SUBQUERY CONTAINING COMPARISONS OF OTHER FEILDS IN OTHER TABLES SUCH AS
         volunteers.firstname = legacy.firstname
         volunteers.lastname = legacy.lasttname
         sites.province= legacy.province
         sites.municipality= legacy.municipality
         sites.name= legacy.name)

Каким должен быть подзапрос?


person Keyslinger    schedule 19.09.2011    source источник


Ответы (1)


Здесь вам не нужен подзапрос, вам нужно соединение.

Я бы написал это для вас, но вы не показываете свои таблицы, поэтому я не могу.

Но в основном первое, что вам нужно сделать, это написать SELECT со всеми таблицами, которые должным образом все соединят. Как только вы это сделаете, все, что вам нужно, это изменить его на UPDATE, и все готово.

person Ariel    schedule 25.09.2011