В настоящее время у меня есть запрос, который выбирает отдельные идентификаторы родительского ресурса, и в то же время я могу фильтровать и сортировать результаты его дочерних таблиц.Основная структура запроса выглядит следующим образом:
SELECT s.id
FROM (
SELECT DISTINCT ON (work_items.id) work_items.id, work_item_states.id AS work_item_states_id
FROM work_items
JOIN work_item_states ON work_item_states.work_item_refer = work_items.id
WHERE work_item_states.disposition = 'cancelled'
ORDER BY work_items.id
) AS s
ORDER BY s.work_item_states_id DESC
LIMIT 50
OFFSET 0
Примечание: столбцы, фильтры, объединения и т. Д. В этом запросе являются лишь примерами для пояснения.Эти запросы будут совершенно другими, поскольку они поддерживают произвольные данные.Только базовая структура запроса остается прежней.
Для целей нумерации страниц мне нужно иметь возможность подсчитать итоговые результаты подзапроса.Пока что я просто использовал для этого отдельный запрос, как показано ниже:
SELECT COUNT(s)
FROM (
SELECT DISTINCT ON (work_items.id) work_items.id, work_item_states.id AS work_item_states_id
FROM work_items
JOIN work_item_states ON work_item_states.work_item_refer = work_items.id
WHERE work_item_states.disposition = 'cancelled'
ORDER BY work_items.id
) AS s
Это довольно неэффективно, так как я буду работать с базами данных с миллионамизаписей.Кто-нибудь знает, как я могу объединить эти два вида запросов, чтобы результат возвращал как идентификаторы, так и количество подзапросов?Что-то вроде:
SELECT s.id, COUNT(s)
- это то, что я ищу, но это просто дает мне счет 1 для каждого идентификатора в результатах.
Спасибо