SQLite: group_concat () несколько столбцов - PullRequest
11 голосов
/ 21 марта 2012

У меня проблема:

В моей базе данных SQLite (sqlite3 на android) у меня есть таблица, похожая на

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

, и я хотел бы перейти на

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

То, что я получил до сих пор, это

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

, который дает мне все в одной строке

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

Хотя это уже довольно хорошо, это все еще не то, что я хочу.И в этот момент я не понимаю, как мне комбинировать вещи, чтобы получить то, что я хочу.

Об одном замечании: есть ли хорошее руководство по сложным запросам?До сих пор я нашел только некоторые фрагменты, но ничего, что действительно объясняет, как такая вещь может быть построена

1 Ответ

15 голосов
/ 21 марта 2012

Вы были близки!

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...