Как объединить несколько строк в поле в объединенном агрегированном запросе - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть две таблицы:

Таблица 1:

id | color | qty
---|-------|-----
1  | red   | 10
2  | green | 20
3  | blue  | 50

Таблица 2:

id | shade  
---|-------
1  | light
1  | dark   
2  | light
3  | light
3  | dark 

Как мне написать запрос, объединяющий две таблицы ивозвращает оттенки в виде строки с разделителями-запятыми, т.е.

1 | red   | light, dark | 10
2 | green | light       | 20
3 | blue  | light, dark | 50

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

В случае, если ваша версия ниже 9.0, вы можете попробовать это.

select 
  t1.id,
  t1.color,
  array_to_string(array_agg(t2.shade), ','),
  t1.qty
from
  tbl1 as t1
  inner join tbl2 as t2 on t2.id = t1.id
group by
  t1.id,
  t1.color,
  t1.qty
order by
  t1.id

Вы можете проверить здесь для Демо

0 голосов
/ 29 декабря 2018

Если вы используете версию 9.0 или выше, вы можете использовать агрегированный запрос с «string_agg»:

SELECT 
    t1.id,
    t1.color,
    string_agg(t2.shade, ', ')
    t1.quantity
FROM
    table1 as t1
    INNER JOIN table2 t2 on t2.id = t1.id
GROUP BY
    t1.id,
    t1.color,
    t1.quantity
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...