Здравствуйте. Есть две таблицы - 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'