Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

PostgreSQL - как объединить результат выборки в одну строку?

6.6K
27 января 2008 года
noff
67 / / 01.08.2006
Имеем запрос что-то вроде:
SELECT title FROM articles
Как сделать запрос так, чтобы в результате получить не набор строк, а одну строку, в которой перечислены все найденные результаты? К примеру, через запятую или пробел.
1
27 января 2008 года
kot_
7.3K / / 20.01.2000
Цитата: noff
Имеем запрос что-то вроде:
SELECT title FROM articles
Как сделать запрос так, чтобы в результате получить не набор строк, а одну строку, в которой перечислены все найденные результаты? К примеру, через запятую или пробел.


Стандартным решением будет использование курсора. Так же проверьте, возможно данный сервер поддерживает конструкцию типа:

 
Код:
WITH Days(D) AS
(
 ...

)

(я не помню, есть ли она в ANCII SQL - а смотреть лень)
Кроме того, так ли уж надо, что бы это делал сервер? Не проще ли на клиенте уже выгрузить то что необходимо, и так как необходимо?
6.6K
27 января 2008 года
noff
67 / / 01.08.2006
Выгрузить накладно будет. К примеру имеем табличку, в которой 4 млн учетных записей пользователей. Каждый пользователь имеет набор тегов. Вот мне и нужно выбрать только тех пользователей, у которых есть нужные теги. Теги описаны отдельной таблицей.
1
28 января 2008 года
kot_
7.3K / / 20.01.2000
Цитата: noff
Выгрузить накладно будет. К примеру имеем табличку, в которой 4 млн учетных записей пользователей. Каждый пользователь имеет набор тегов. Вот мне и нужно выбрать только тех пользователей, у которых есть нужные теги. Теги описаны отдельной таблицей.


Это о чем? Почему формирование строки не будет накладным, а выгрузка на пользователя вдруг станет "накладно"? Вы же используете условие отбора - какая разница - отослать пользователю строку или отослать пользователю записи?

6.6K
28 января 2008 года
noff
67 / / 01.08.2006
Мне нужно сформировать строки, провести по ним поиск, и вернуть то, что удовлетворяет поиску, т.е. не 4 млн записей, а штук 200.
2
28 января 2008 года
squirL
5.6K / / 13.08.2003
Цитата: noff
Имеем запрос что-то вроде:
SELECT title FROM articles
Как сделать запрос так, чтобы в результате получить не набор строк, а одну строку, в которой перечислены все найденные результаты? К примеру, через запятую или пробел.



никак. получайте набор строк и на клиенте обрабатывайте его в нужный вид

1
28 января 2008 года
kot_
7.3K / / 20.01.2000
Цитата: noff
Мне нужно сформировать строки, провести по ним поиск, и вернуть то, что удовлетворяет поиску, т.е. не 4 млн записей, а штук 200.


А SQL-запросы что отменили? :) Зачем формировать строки? Выберите записи по условию, а затем с этим набором делайте что хотите - или строки формируйте или на клиента высылайте. Тем более что вы можете использовать джойн на справочную таблицу тегов.
2squirL
почему нельзя - можно. например тем же курсором. вопрос только - а оно надо? :)

1
28 января 2008 года
kot_
7.3K / / 20.01.2000
Необходимость обрабатывать строки таким образом, как вы хотите, в нормально спроектированной базе возникает крайне редко. Найболее частый случай - это передача в процедуру переменного количества параметров. Т.е. процедура может принимать параметры от одного, до напрмер 100. Стандартными средствами это сделать крайне неудобно. Тогда это еще более-менее оправданно. А зачем таким образом обрабатывать данные в базе - для меня загадка.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог