proudmore
@proudmore
Добываю код из головы

Double join in update query?

Здравствуйте. Есть две таблицы - note, contractor.
В таблице note лежат два ключа на таблицу contractor (fk_contractor_from, fk_contractor_to);
Нужно произвести update note по условиям из contractor.
Как быть?

UPDATE 
    delivery_note 
SET 
    fk_contractor_from = fk_contractor_to,
    fk_contractor_to = fk_contractor_from 
WHERE 
    fk_contractor_from IN(
        SELECT DISTINCT id_contractor FROM contractor WHERE "type" = 'WH'
    )
    AND
    fk_contractor_to IN (
        SELECT DISTINCT id_contractor FROM contractor WHERE "type" = 'DC'
    )


Нужно уйти от вложенных запросов, что-то вроде такого, только работающее:
UPDATE 
    delivery_note as dn
SET 
    dn.fk_contractor_from = dn.fk_contractor_to,
    dn.fk_contractor_to = dn.fk_contractor_from
JOIN contractor as c_from ON dn.fk_contractor_from = c_from.id_contractor
JOIN contractor as c_to ON dn.fk_contractor_to = c_to.id_contractor
WHERE
    c_from.type = 'WH'
    AND
    c_to.type = 'DC'
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 3
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы