2013-07-04 8 views
9

Questo è il mio tavolo:Utilizzando COUNT in group_concat

id fk_company 
1   2  
2   2  
3   2  
4   4  
5   4  
6   11 
7   11 
8   11 
9   12 

il risultato che voglio dovrebbe essere stringa "3, 2, 3, 1" perché questa è solo una parte della mia stringa di query complesse.

ho cercato di utilizzare questa query:

SELECT GROUP_CONCAT(COUNT(id) SEPARATOR ", ") 
FROM `table` GROUP BY fk_company; 

ma ho ottenuto un errore:

Numero di errore: 1111

uso non valido di funzione di gruppo

Ho un COUNT sensazione , MAX, MIN o SUM non possono essere utilizzati in GROUP_CONCAT. Se è così, conosci un altro modo per farlo.

+0

perché ti voglio questo? Cosa succede dopo? – Strawberry

risposta

8

È necessario COUNT() con GROUP BY in un selezionare prima interna e poi applicare GROUP_CONCAT()

SELECT GROUP_CONCAT(cnt) cnt 
    FROM 
(
    SELECT COUNT(*) cnt 
    FROM table1 
    GROUP BY fk_company 
) q 

uscita:

 
|  CNT | 
----------- 
| 3,2,3,1 | 

Ecco SQLFiddle demo

+0

Grazie mille, ho dedicato molto tempo per sistemarlo. Purtroppo non ho abbastanza tempo per giocare, quindi ho bisogno di aiuto anche se questo risultato sembra così facile. – mesnicka

+0

@mesnicka Sei il benvenuto. Sono contento di aver potuto aiutare :) – peterm

+0

Nota che questo si basa attualmente sul fatto che i numeri fk_company sono disposti in sequenza, in un modo che corrisponde all'id – Strawberry

0
select GROUP_CONCAT(counts) 
    from (
     select count(id) counts from 
      table group by fk_company 
    );