2012-03-21 47 views
10

I tiene un problema:SQLite: GROUP_CONCAT() varias columnas

En mi SQLite (sqlite3 en android) de base de datos tengo una tabla como así

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

y me gustaría llegar a

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

Lo que tenemos hasta ahora es

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

lo que me da todo en una cadena de

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

pesar de que es bastante bueno ya, todavía no es lo que quiero. Y en ese momento no entiendo cómo tengo que combinar cosas para obtener lo que quiero.

En una nota al margen: ¿Hay algún buen tutorial sobre consultas complejas? Hasta ahora solo he encontrado algunos fragmentos, pero nada que realmente explique cómo se puede construir tal cosa

+0

Zapl he estado buscando durante todo un día cómo combinar múltiples filas en una fila por un día entero gracias a su pregunta + ejemplo, que me mostraron la solución :) –

Respuesta

14

¡Estuvieron cerca!

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, sólo 2 líneas más. Thx mucho – zapl

+0

Hola cómo poner un filtro (dónde) en group_concat en sqlite? –

+1

@MuhammadBabar jst antes de la cláusula GROUP BY – Vincy