Если вы используете какой-то правильный псевдоним и некоторый правильный JOIN
синтаксис, это намного упростит обнаружение проблемы:
UPDATE tuo
SET trasco_id_object = op.pratica
FROM trasco_utilizzi_oggetto tuo
JOIN oggetti_pratica op ON tuo.oggetto = op.oggetto
JOIN pratiche_tributo pt ON op.pratica = pt.pratica
JOIN denunce_ici di ON pt.pratica = di.pratica
WHERE op.pratica = (SELECT MIN(op.pratica)
FROM oggetti_pratica sq
WHERE pt.pratica = di.pratica
AND sq.pratica = pt.pratica
AND sq.oggetto = op.oggetto);
В частности, обратите внимание MIN(op.pratica)
, но таблица имеет псевдоним sq
. Это должно быть MIN(sq.pratica)
.
Я также сомневаюсь, что pt.pratica = di.pratica
необходим во втором WHERE
(это уже в ON
). Таким образом ваш запрос становится:
UPDATE tuo
SET trasco_id_object = op.pratica
FROM trasco_utilizzi_oggetto tuo
JOIN oggetti_pratica op ON tuo.oggetto = op.oggetto
JOIN pratiche_tributo pt ON op.pratica = pt.pratica
JOIN denunce_ici di ON pt.pratica = di.pratica
WHERE op.pratica = (SELECT MIN(sq.pratica)
FROM oggetti_pratica sq
WHERE sq.pratica = pt.pratica
AND sq.oggetto = op.oggetto);
Чтобы повторить мой комментарий: Вредные привычки к удару: использование JOINs в старом стиле и, кроме того, Плохие привычки к удару: использование псевдонимов таблицы, таких как (a, b, c) или (t1, t2, t3) .