Múltiples cuentas dentro de una sola consulta SQL

Estoy tratando de obtener el número de documentos dentro de 4 secciones específicas usando el siguiente código:

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

La tabla 'categoría' tenía un ID, título, etc. La tabla 'category_link_section' contiene vínculos de ID entre category_id, section_id y doc_id.

Si el recuento es 0 para cualquier columna, muestra 0 en esa columna. Pero si el resultado no es 0, muestra el resultado de la multiplicación de todos los resultados de la sección. Entonces, si mis 4 columnas de columnas debían regresar: 1, 2, 0, 3; En realidad mostraría 6, 6, 0, 6;

Si utilizo este código siguiente para cada categoría específica, obtengo los resultados que deseo:

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

pero luego necesito recorrer la base de datos cada vez para cada sección.

Entonces, mi pregunta es, ¿debo pasar por cada sección y llamarlas, construir mi tabla fuera del SQL, o se puede hacer esto en una sola consulta?

Respuestas a la pregunta(2)

Su respuesta a la pregunta