@VoteyDisciple odpověď je na správné cestě, ale jeho dotaz potřebuje nějaká vylepšení:
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;
Vysvětlení:
IF()
výrazy jsou nadbytečné, protože rovnost již vrací 1 nebo 0.- Použijte
ts1.section_id=1
mimo podmínku spojení, jinak nikdy nezískáte druhýsection_id
hodnoty. - Seskupit podle
c.id
pouze. Předpokládám, že OP chce pouze jeden řádek na kategorii a sloupce pro počty každéhosection_id
hodnotu pro příslušnou kategorii. Pokud je dotaz seskupen podlec.id, ts1.section_id
, pak by byly až čtyři řádky na kategorii. - Přesuňte čárky ve výběrovém seznamu. Čárky plovoucí na začátku řádku vypadají ošklivě.;-)