отговор на @VoteyDisciple е на прав път, но заявката му се нуждае от някои подобрения:
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;
Обяснения:
IF()
изразите са излишни, защото равенството вече връща 1 или 0.- Вземете
ts1.section_id=1
извън условието за присъединяване или никога няма да получите другияsection_id
стойности. - Групиране по
c.id
само. Предполагам, че OP иска само един ред за категория и колони за броя на всекиsection_id
стойност за съответната категория. Ако заявката е групирана поc.id, ts1.section_id
, тогава ще има до четири реда на категория. - Преместете запетаите в списъка за избор. Плаващите запетаи в началото на реда изглеждат грозни.;-)