Sqlite group_concat выберите с «особыми потребностями» - PullRequest
2 голосов
/ 14 декабря 2009

Я знаю, как использовать group_concat с Sqlite, чтобы сделать следующее:

id - f1 - f2 - f3
 1 -  1 -  a - NULL
 2 -  1 -  b - NULL
 3 -  2 -  c - NULL
 4 -  2 -  d - NULL

выберите идентификатор, f1, group_concat (f2), f3 из таблицы сгруппировать по f1

 result:
 2 -  1 - a,b - NULL
 4 -  2 - c,d - NULL

Как видите, идентификаторы 1 и 3 отбрасываются, что является ожидаемым поведением. Но мне понадобится:

 1 -  1 -  a - a,b
 2 -  1 -  b - a,b
 3 -  2 -  c - c,d
 4 -  2 -  d - c,d

Итак, каждая запись возвращена, и другое поле (f3) обновлено с group_concat

Есть идеи, как это можно сделать в Sqlite?

Спасибо

Ответы [ 2 ]

4 голосов
/ 14 декабря 2009

использовать встроенный оператор SQL

select id, f1, f2, (select group_concat(f2) from t t2 where t2.f1 = t1.f1)
from t t1
3 голосов
/ 14 декабря 2009

Не уверен, ПОЧЕМУ вы этого хотите, но здесь идет речь:

select 
  outer_t.id
 ,outer_t.f1
 ,outer_t.f2
 ,inline_view.groupfoo
 from t as outer_t 
 left join (
  select 
      f1
     ,group_concat(f2) as groupfoo 
    from t 
    group by f1
 ) inline_view on inline_view.f1 = outer_t.f1
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...