Re: Вопрос по построению запросу

Поиск
Список
Период
Сортировка
От Dmitriy Olshevskiy
Тема Re: Вопрос по построению запросу
Дата
Msg-id 54456309.7090301@bk.ru
обсуждение исходный текст
Ответ на Re: [pgsql-ru-general] Re: [pgsql-ru-general] Вопрос по построению запросу  (Oleg Bartunov <obartunov@gmail.com>)
Ответы Re: [pgsql-ru-general] Вопрос по построению запросу
Список pgsql-ru-general
Здравствуйте, Олег, Владимир и Алексей.
У меня несколько замечаний, которые я позволю себе высказать.
1.
>> select concat_ws(',', t.*) from spr.tovar t;
select t::text from spr.tovar t;
оба запроса по сути делают одно и то же, но второй заметно короче.
2.
>> select concat_ws(',', coalesce('', spr.tovar.*)) from spr.tovar
У coalesce здесь на первом месте константа '', а не проверяемое значение.
В таком случае результатом всегда будет пустая строка, потому что она не null.
3.
с таким coalesce postgres будет ругаться на круглые скобки (DETAIL: 
Missing left parenthesis), указывая на первый апостроф пустой строки, т.е
он будет ожидать тип записи таблицы spr.tovar.
4.
честно говоря, у меня нет своего решения, но вот тут нашел одно
довольное интересное http://stackoverflow.com/questions/11469059/postgresql-return-entire-row-as-array
т.е. в вашем случае, Владимир, можно написать так:
select array_to_string(
    translate(
        string_to_array(t::text,',')::text, '()', ''
    )::text[], ','
)
from spr.tovar t

Проверял на postgresql 9.3.4.
Если в чем-то неправ, прошу объяснить почему. Спасибо)

On 20.10.2014 21:29, Oleg Bartunov wrote:
Не забываем про  coalesce(), если не хотите удивляться !
select concat_ws(',', coalesce('', spr.tovar.*)) from spr.tovar

2014-10-20 21:03 GMT+04:00 Alexey Kolpakov <al.kolpak@gmail.com>:

select concat_ws(',', "spr.tovar".*) from spr.tovar 


20 октября 2014 г., 20:31 пользователь Владимир Комаров <vlads@sibnet.ru> написал:

Здраствуйте.

Есть запрос:

SELECT * FROM spr.tovar

Надо вместо «*» поставить некую функцию, которая возвращала только одну строку типа text, содержащую информацию из всех столбцов таблицы. Т.е. соединяла их в одну строку.

Количество столбцов, как и их содержание неизвестно.  Так что предложение на подобии kod||','||name||','||… не подходят.

 

Пример:

SELECT * FROM spr.tovar

X             name    …

-----------------------

1             tov1       …

2             tov2       …

 

А надо

SELECT ??? FROM spr.tovar

Text

------------

1,tov1,

2,tov2,

 

 

Заранее большое спасибо.




--
wbr, Alexey Kolpakov


-- 
Dmitriy Olshevskiy

В списке pgsql-ru-general по дате отправления:

Предыдущее
От: Oleg Bartunov
Дата:
Сообщение: Re: [pgsql-ru-general] Re: [pgsql-ru-general] Вопрос по построению запросу
Следующее
От: Oleg Bartunov
Дата:
Сообщение: Re: [pgsql-ru-general] Вопрос по построению запросу