powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / преобразование данных массива в строку.
9 сообщений из 9, страница 1 из 1
преобразование данных массива в строку.
    #38718292
Ptaha71
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,
задача следующая: одной процедуре может соответствовать от одного до бесконечности кодов. Это хранится в таблице структуры
id, code.
Необходимо в запросе выводить это в следующем виде
id, список кодов через запятую.

Как это можно реализовать?
...
Рейтинг: 0 / 0
преобразование данных массива в строку.
    #38718353
/\/\/\/\/\/\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ptaha71,

Варианты:
1. Разместите это предложение в разделе "Работа" с указанием объема вознаграждения. (Это для Вас наиболее реальный).
2. Прочитайте документацию и сделайте сами ( http://www.postgresql.org/docs/9.2/static/functions-aggregate.html)
3. Никак. Потому что действительно Вам нужно что-то другое.
...
Рейтинг: 0 / 0
преобразование данных массива в строку.
    #38718362
Ptaha71
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
/\/\/\/\/\/\,
огромное Вам спасибо! Ответ очень информативен.
...
Рейтинг: 0 / 0
преобразование данных массива в строку.
    #38718415
Ptaha71
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобралась самостоятельно, несмотря на предыдущий совет. Все очень просто, как и ожидалось. Если кому потом понадобится пишу как реализовала:
select lu.lot_id, array_to_string(ARRAY(select code from t1 where lot_id =lu.lot_id order by lot_id), ', ') AS code_list
from t1 lu
group by lu.lot_id
...
Рейтинг: 0 / 0
преобразование данных массива в строку.
    #38718426
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ptaha71,

называется это транспонирование, по моему Вам вполне подойдёт Crosstab
с конкатенацией уж как-нибудь разберётесь.
впрочем есть нюансы, а именно смущает фраза
Ptaha71до бесконечности кодовбоюсь упрётесь в какое-нибудь ограничение при использовании crosstab, поэтому пишите процедуру, так будет надёжнее.
...
Рейтинг: 0 / 0
преобразование данных массива в строку.
    #38718430
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ptaha71select lu.lot_id, array_to_string(ARRAY(select code from t1 where lot_id =lu.lot_id order by lot_id), ', ') AS code_list
from t1 lu
group by lu.lot_idorder by лишнее.
...
Рейтинг: 0 / 0
преобразование данных массива в строку.
    #38718448
/\/\/\/\/\/\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ptaha71Разобралась самостоятельно, несмотря на предыдущий совет. Все очень просто, как и ожидалось. Если кому потом понадобится пишу как реализовала:
select lu.lot_id, array_to_string(ARRAY(select code from t1 where lot_id =lu.lot_id order by lot_id), ', ') AS code_list
from t1 lu
group by lu.lot_id

Нет, не разобрались. Хотя подход засчитан.
Если Вы более внимательно прочитаете ссылку, указанную выше, то обнаружите функцию string_agg. Тогда все выражение сведется к:

Код: sql
1.
2.
3.
4.
5.
SELECT
  lu.log_id,
  STRING_AGG(lu.code, ', ' ORDER BY lu.log_id) AS code_list
FROM t1 lu
GROUP BY lu.lot_id
...
Рейтинг: 0 / 0
преобразование данных массива в строку.
    #38718492
Ptaha71
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
roadsterPtaha71select lu.lot_id, array_to_string(ARRAY(select code from t1 where lot_id =lu.lot_id order by lot_id), ', ') AS code_list
from t1 lu
group by lu.lot_idorder by лишнее.

да, полностью согласна.
...
Рейтинг: 0 / 0
преобразование данных массива в строку.
    #38718506
Ptaha71
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
/\/\/\/\/\/\Ptaha71Разобралась самостоятельно, несмотря на предыдущий совет. Все очень просто, как и ожидалось. Если кому потом понадобится пишу как реализовала:
select lu.lot_id, array_to_string(ARRAY(select code from t1 where lot_id =lu.lot_id order by lot_id), ', ') AS code_list
from t1 lu
group by lu.lot_id

Нет, не разобрались. Хотя подход засчитан.
Если Вы более внимательно прочитаете ссылку, указанную выше, то обнаружите функцию string_agg. Тогда все выражение сведется к:

Код: sql
1.
2.
3.
4.
5.
SELECT
  lu.log_id,
  STRING_AGG(lu.code, ', ' ORDER BY lu.log_id) AS code_list
FROM t1 lu
GROUP BY lu.lot_id



Да, отличный вариант. По ссылке я тогда прошла, но к этому времени уже нашла первый вариант, поэтому не внимательно, видимо, просмотрела набор функций.
Просто, если честно, Ваш тон ответа не особо способствовал серьезному отношению к написанному.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / преобразование данных массива в строку.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]