@VoteyDisciples svar er på rette vej, men hans forespørgsel har brug for nogle forbedringer:
SELECT c.id, c.title,
SUM(ts1.section_id = 1) AS doc1,
SUM(ts1.section_id = 2) AS doc2,
SUM(ts1.section_id = 3) AS doc3,
SUM(ts1.section_id = 4) AS doc4
FROM category AS c
LEFT JOIN category_link_section AS ts1
ON (c.id = ts1.category_id)
GROUP BY c.id;
Forklaringer:
IF()udtryk er overflødige, fordi lighed allerede returnerer 1 eller 0.- Tag
ts1.section_id=1ud af join-betingelsen, ellers får du aldrig den andensection_idværdier. - Gruppér efter
c.idkun. Jeg antager, at OP kun ønsker en række pr. kategori og kolonner for tællinger af hversection_idværdi for den respektive kategori. Hvis forespørgslen er grupperet efterc.id, ts1.section_id, så ville der være op til fire rækker pr. kategori. - Flyt kommaerne i valglisten. Kommaer, der svæver i begyndelsen af linjen, ser grimme ud.;-)