таблицы. deposits_requests со связью многие-к-одному к requests_chunk. Для каждого ключа из второй таблицы есть 3 записи в первой, где value = 10000000000000000. То есть в записи по айдишнику в request_chunk должно быть 30000000000000000, а пишет 90000000000000000. Видимо я написал код так, что бы он суммировал вообще все значения а не для каждого. Подскажите, как это можно исправить? Вот код
так он на каждую запись сделал по 3
а как это можно исправить что бы он делал только для соответствующих? То есть что бы там было не 9 и много нулей, а 3
Покажите хотя бы запросы текстом (а лучше — и \d таблиц).
UPDATE requests_chunk SET sum = (SELECT SUM(value) FROM deposit_requests WHERE link_uuid IN (SELECT uuid FROM requests_chunk WHERE link_uuid = uuid));
Лучше всегда в запросах, использующих больше одной таблицы (подзапроса), квалифицировать (явно указывать таблицу) все используемые поля. Вот тут вообще не видно, что с чем связано, например (более того, вполне возможно, что однажды Вы на подобном "подорвётесь", когда PostgreSQL "угадает" поле не той таблицы, которую Вы имели в виду).
UPDATE requests_chunk SET sum = (SELECT SUM(value) FROM deposit_requests WHERE deposit_requests.link_uuid IN (SELECT uuid FROM requests_chunk WHERE deposit_requests.link_uuid = requests_chunk.uuid));
UPDATE requests_chunk SET sum = ( SELECT SUM(/*which table?*/value) FROM deposit_requests WHERE deposit_requests.link_uuid IN ( SELECT uuid FROM requests_chunk -- AS some_alias, the same table as updated WHERE deposit_requests.link_uuid = requests_chunk.uuid ) ); И \d таблиц мы так и не увидим? ;)
к сожалению не помогло, все равно 9 ставит вместо 3
Обсуждают сегодня