2012-03-21 42 views
10

Tôi có một vấn đề:SQLite: group_concat() nhiều cột

Trong SQLite của tôi (sqlite3 trên android) cơ sở dữ liệu tôi có một bảng như vậy

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

và tôi muốn để có được

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

Những gì tôi đã cho đến nay là

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

mang lại cho tôi tất cả trong một chuỗi

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

Mặc dù điều đó là khá tốt rồi, nó vẫn không phải là điều tôi muốn. Và tại thời điểm đó tôi không hiểu làm thế nào tôi phải kết hợp mọi thứ để có được những gì tôi muốn.

Trên sidenote: Có hướng dẫn hay về truy vấn phức tạp hơn không? Cho đến nay tôi chỉ tìm thấy một số đoạn trích nhưng không có gì thực sự giải thích cách một thứ như vậy có thể được xây dựng như thế nào

+0

Zapl tôi đã tìm kiếm cả một ngày làm thế nào để hợp nhất nhiều hàng vào một hàng cho một ngày nhờ toàn bộ cho câu hỏi + ví dụ của bạn mà chỉ cho tôi giải pháp :) –

Trả lời

14

Bạn đã thân thiết!

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, chỉ có 2 dòng hơn. Thx rất nhiều – zapl

+0

Hi làm thế nào để đặt một bộ lọc (ở đâu) trên group_concat trong sqlite? –

+1

@MuhammadBabar jst trước mệnh đề GROUP BY – Vincy