2012-03-21 10 views
10

Mi ha un problema:SQLite: group_concat() più colonne

Nel mio SQLite (sqlite3 su Android) di database Ho una tabella in questo modo

company | name | job 
-------------------------- 
     1 | 'Peter' | 'Manager' 
     1 | 'Jim' | (null) 
     2 | 'John' | 'CEO' 
     2 | 'Alex' | 'Developer' 
     3 | 'Lisa' | (null) 

e mi piacerebbe arrivare a

company | formated 
-------------------------------------- 
     1 | 'Peter (Manager), Jim' 
     2 | 'John (CEO), Alex (Developer)' 
     3 | 'Lisa' 

quello che ho ottenuto finora è

SELECT group_concat(concat) FROM (
    SELECT 
     CASE 
      WHEN job IS NULL THEN name 
      ELSE name || ' (' || job || ')' 
     END AS concat 
    FROM jobs 
) 

, che mi dà tutto in una stringa

'Peter (Manager), Jim, John (CEO), Alex (Developer), Lisa' 

Anche se questo è già abbastanza buona, non è ancora quello che voglio. E a quel punto non riesco a capire come devo combinare le cose per ottenere ciò che voglio.

Su un sidenote: Esiste qualche buon tutorial su query più complesse? Finora ho trovato solo alcuni frammenti, ma nulla che spieghi davvero come una cosa del genere possa essere costruita

+0

Zapl Sono stato alla ricerca per un giorno intero come unire più righe in una riga per un giorno intero grazie alla vostra domanda + esempio che mi ha mostrato la soluzione :) –

risposta

14

Eri vicino!

SELECT 
    company, 
    group_concat(concat) AS formated 
FROM (
    SELECT 
     company, 
     CASE 
      WHEN job IS NULL THEN name 
      ELSE name || ' (' || job || ')' 
     END AS concat 
    FROM jobs 
) 
GROUP BY company 
+1

Argh, solo 2 linee di più. Grazie mille – zapl

+0

Ciao come mettere un filtro (dove) su group_concat in sqlite? –

+1

@MuhammadBabar jst prima della clausola GROUP BY – Vincy