Несколько подсчетов в одном запросе SQL

Я пытаюсь подсчитать количество документов в 4 конкретных разделах, используя следующий код:

SELECT
    category.id
    , category.title
    , count(ts1.section_id) AS doc1
    , count(ts2.section_id) AS doc2
    , count(ts3.section_id) AS doc3
    , count(ts4.section_id) AS doc4
FROM
    category 
    LEFT JOIN category_link_section AS ts1
        ON (category.id = ts1.category_id AND ts1.section_id = 1)
    LEFT JOIN category_link_section AS ts2
        ON (category.id = ts2.category_id AND ts2.section_id = 2)
    LEFT JOIN category_link_section AS ts3
        ON (category.id = ts3.category_id AND ts3.section_id = 3)
    LEFT JOIN category_link_section AS ts4
        ON (category.id = ts4.category_id AND ts4.section_id = 4)
GROUP BY category.id, ts1.section_id, ts2.section_id, ts3.section_id, ts4.section_id

Таблица «категория» был идентификатор, название и т. д. Таблица "category_link_section" содержит ссылки на идентификаторы между category_id, section_id и doc_id.

Если счетчик равен 0 для любого столбца, он отображает 0 в этом столбце. Но если результат не равен 0, он показывает результат умножения всех результатов сечения. Так что если мои 4 столбца подсчета должны были вернуть: 1, 2, 0, 3; это фактически показало бы 6, 6, 0, 6;

Если я использую следующий код для каждой конкретной категории, я получаю желаемые результаты:

SELECT
    category.id
    , category.title
    , count(ts1.section_id) AS doc1
FROM
    category 
    LEFT JOIN category_link_section AS ts1
        ON (category.id = ts1.category_id AND ts1.section_id = 1)
GROUP BY category.id, ts1.section_id

но тогда мне нужно каждый раз проходить по базе данных для каждого раздела.

Поэтому у меня вопрос: нужно ли проходить и вызывать каждый раздел по очереди, составляя таблицу вне SQL, или это можно сделать одним запросом?

Ответы на вопрос(2)

Ваш ответ на вопрос