2016-02-19 2 views
0

У меня есть две таблицы следующим образом:как обновить таблицу после извлечения данных из другой таблицы

active_employee, с колоннами ид, email_id, работы, расположение и PROJECT_ID

project_relation, с идентификатором столбцов , email_id и project_id.

Моя проблема заключается в том, что я хочу обновить столбец project_id таблицы project_relation с условием, что если значение для project_id в обеих таблицах не одинаково, тогда оно должно извлечь значение из таблицы «active_employee» и обновить project_relation для соответствующего email_id.

Помогите мне, как это сделать!

+0

вы должны сделать это с помощью кода –

+0

Возможного дубликата [MySQL UPDATE синтаксиса с несколькими таблицами, используя WHERE] (http://stackoverflow.com/questions/15037883/mysql-update-syntax-with-multiple-tables-using-where-clause) – Shadow

+0

Вы можете использовать соединение в обновлениях – jean

ответ

0

Я считаю, что обновление от с РЕГИСТРИРУЙТЕСЬ поможет:

UPDATE 
    project_relation 
SET 
    project_relation.project_id = active_employee.project_id 
FROM 
    project_relation PR 
INNER JOIN 
    active_employee AE 
ON 
    PR.columns_id = AE.columns_id 

Просто проверьте подчеркивание .. это может создать проблему .. Вы можете удалить его и внести изменения в БД столбцов имен также.

или просто попробовать this-

UPDATE project_relation SET project_relation.project_id = active_employee.project_id where project_relation.columns_id = active_employee.columns_id; 
0

Я думаю, что я получить то, что вам нужно. Я создал несколько временных таблиц, чтобы заменить ваши фактические таблицы для тестирования.

Я использовал подзапрос переименовать некоторые из имен столбцов, чтобы удалить неоднозначные имена из-за обновление таблицы:

DECLARE @ACTIVE_EMPLOYEE TABLE (columnid UNIQUEIDENTIFIER, emailid UNIQUEIDENTIFIER, job VARCHAR(200), location VARCHAR(200), projectid UNIQUEIDENTIFIER) 
DECLARE @PROJECT_RELATION TABLE (columnid UNIQUEIDENTIFIER, emailid UNIQUEIDENTIFIER, projectid UNIQUEIDENTIFIER) 

UPDATE @PROJECT_RELATION 
SET projectid = active.proid 
FROM (SELECT columnid, 
      emailid [emid], 
      job, 
      location, 
      projectid [proid] 
     FROM @ACTIVE_EMPLOYEE) active 
WHERE active.emid = emailid 
AND active.proid <> projectid 
Смежные вопросы