Я пытаюсь обновить статус столбца, проверяя две соединенные таблицы.Хотя я не получаю ошибку.Колум не обновляется.Я хочу взять общий идентификатор блочного графика и посмотреть, есть ли соответствующая транзакция или контейнер.Если есть транзакция, но нет контейнера, мне нужно пометить ее как P.
UPDATE (general
LEFT JOIN
transactions
ON
general.blockplotid=transactions.blockplotid)
LEFT JOIN
container
ON
general.blockplotid=container.blockplotid
SET general.lotstatus = 'P'
WHERE general.lotstatus != 'U' AND
transactions.id_transaction IS NOT NULL AND
container.id_container IS NULL
Итак, подведем итог, у меня есть 3 таблицы.Я хочу обновить только один столбец в одной таблице.Я хочу проверить значения в двух других таблицах, их значения зависят от установленного значения.Три таблицы связаны с первичным ключом к внешнему ключу.
Когда я делаю оператор выбора двойного соединения.Запрос кажется правильным.
SELECT transactions.blockplotid AS blockplotid_2, container.blockplotid AS blockplotid_1, general.blockplotid, general.lotstatus, container.id_container, transactions.id_transaction
FROM ((general LEFT JOIN transactions ON general.blockplotid=transactions.blockplotid) LEFT JOIN container ON general.blockplotid=container.blockplotid)
ORDER BY general.blockplotid ASC
Однако кажется, что объединение для обновления не похоже на select.
Этот запрос, похоже, работал:
Этот запрос работал:
UPDATE ((general LEFT JOIN transactions ON transactions.blockplotid=general.blockplotid) LEFT JOIN container ON container.blockplotid=general.blockplotid)
SET general.lotstatus='P'
WHERE general.blockplotid!='U' AND container.id_container is null AND transactions.id_transaction is not null
Разница здесь в случае IS NOT NULL, а также в порядке условия where.Есть ли объяснение этому?