Как переписать подзапрос так, чтобы данные из столбца "id" подзапроса можно было использовать в качестве условия для "left join" с таблицей "cc.second_table", избегая дублирования данных в результирующей таблице?
Результат, полученный в подзапросе, можно использовать для выполнения операции join с помощью вложенных подзапросов или с помощью временных таблиц. Один из способов переписать подзапрос так, чтобы данные из столбца "id" подзапроса можно было использовать в качестве условия для "left join" с таблицей "cc.second_table" без дублирования данных, представлен ниже: ```sql SELECT * FROM cc.main_table mt LEFT JOIN ( -- подзапрос для получения уникальных id SELECT DISTINCT id FROM cc.sub_table ) sub ON mt.id = sub.id LEFT JOIN cc.second_table st ON sub.id = st.id ``` В этом примере мы используем вложенный подзапрос, чтобы получить уникальные значения из столбца "id" подзапроса, и затем выполняем "left join" с таблицей "cc.second_table" с использованием этих значений в качестве условия сопоставления. Это позволяет избежать дублирования данных в результирующей таблице.
Если я не напутал с окном partition by va.order_id, apa.sale_type_id, то скорее всего можно переписать так: <br/> <pre><code class="sql">select json_build_object('id', A.id, 'status', A.status)
from (select apa.id, apa.status, va.created_at,
row_number() over (partition by va.order_id, apa.sale_type_id order by apa.created_at desc) Rn
from vt.applications va
join orders o on va.order_id = o.id
join cc.additional_projects_actions apa on apa.order_id = va.order_id
and apa.sale_type_id = va.sale_type_id
where o.id = 64
and va.sale_type_id is not null
) A
where A.Rn = 1 -- отсекаем 1 запись - аналог order by apa.created_at desc limit 1 из первоначального запроса
order by A.created_at desc;</code></pre>
Дубли в таблице сс.second_table или cc.additional_projects_actions?