risposta di @VoteyDisciple è sulla buona strada, ma la sua domanda necessita di alcuni miglioramenti:
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;
Spiegazioni:
- Il
IF()
le espressioni sono ridondanti perché l'uguaglianza restituisce già 1 o 0. - Prendi
ts1.section_id=1
fuori dalla condizione di unione, o non otterrai mai l'altrosection_id
valori. - Raggruppa per
c.id
solo. Presumo che l'OP desideri solo una riga per categoria e colonne per i conteggi di ognisection_id
valore per la rispettiva categoria. Se la query è raggruppata perc.id, ts1.section_id
, ci sarebbero fino a quattro righe per categoria. - Sposta le virgole nell'elenco di selezione. Le virgole che fluttuano all'inizio della riga sembrano brutte.;-)