2012-03-21 19 views
10

I ma problem:SQLite: GROUP_CONCAT() wiele kolumn

W moim SQLite (sqlite3 na Androidzie) bazy danych Mam tabeli jak tak

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

i chciałbym dostać się do

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

co mam tak daleko jest

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

, który daje mi wszystko w jeden ciąg

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

Mimo że jest już dość dobrze, to jeszcze nie to, co chcę. I w tym momencie nie rozumiem, jak muszę łączyć rzeczy, aby uzyskać to, czego chcę.

Na stronie: Czy istnieje dobry podręcznik dotyczący zapytań kompleksowych? Do tej pory znalazłem tylko kilka fragmentów, ale nic nie wyjaśnia, jak można zbudować coś takiego:

+0

Zapl I zostały poszukiwania przez cały dzień jak połączyć wiele wierszy w jednym rzędzie przez cały dzień dzięki swoim pytaniu + przykład, że pokazał mi rozwiązanie :) –

Odpowiedz

14

Byłeś blisko!

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, tylko 2 linie więcej. Thx dużo – zapl

+0

Hi, jak umieścić filtr (gdzie) na group_concat w sqlite? –

+1

@MuhammadBabar jst przed klauzulą ​​GROUP BY – Vincy