Этот запрос дает мне несколько строк из table1
вместе с соответствующими записями из table2
с использованием left join lateral
. Я ограничил строки из таблицы 2 до 10 строк в каждой.
select t1.id, array_agg(t2.column1)
from table1 t1
left join lateral (select * from table2 where table1_id = t1.id order by column2 limit 10) t2 on true
where t1.other = other_value
group by t1.id
Но как я могу включить общее количество count(*)
всех записей в таблице 2, связанных с таблицей 1 (select count(*) from table2 where table1_id = t1.id
). Поскольку я делаю боковое соединение, я не уверен, как добавить эти результаты.
Могу ли я повторно использовать боковое соединение, которое я уже делаю, или мне придется сделать отдельное боковое соединение, потому что первое имеет limit 10
, а count(*)
не требует ограничений? Как должен выглядеть запрос, чтобы он работал так? (Я думаю, что может быть способ сделать это, используя синтаксис среза массива из первого бокового соединения, но я думаю, что это было бы дорого, так как нужно было бы получить все строки только для того, чтобы получить их количество.)