@VoteyDisciples svar är på rätt väg, men hans fråga behöver några förbättringar:
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;
Förklaringar:
IF()
uttryck är överflödiga eftersom likhet redan returnerar 1 eller 0.- Ta
ts1.section_id=1
ut ur joinvillkoret, annars får du aldrig det andrasection_id
värden. - Gruppera efter
c.id
endast. Jag antar att OP bara vill ha en rad per kategori och kolumner för räkningar av varjesection_id
värde för respektive kategori. Om frågan grupperas efterc.id, ts1.section_id
, då skulle det finnas upp till fyra rader per kategori. - Flytta kommatecken i urvalslistan. Komma som svävar i början av raden ser fula ut.;-)