Re: Аггрегаторные функции: исключить NULL

Поиск
Список
Период
Сортировка
От Dmitry E. Oboukhov
Тема Re: Аггрегаторные функции: исключить NULL
Дата
Msg-id 20111116131555.GC8695@apache.rbscorp.ru
обсуждение исходный текст
Ответ на Re: Аггрегаторные функции: исключить NULL  ("Andrey N. Oktyabrski" <ano@bestmx.ru>)
Список pgsql-ru-general
> On 14.11.11 14:01, Dmitry E. Oboukhov wrote:
>> Есть ли простой способ в третьем столбике исключить {NULL}?
> INNER JOIN?


то есть уточним задачу

есть таблица users

 | id | ... |
 | 1  | ... |
 | 2  | ... |

есть таблица

users_messages

 | id | uid | message |
 |  1 |  1  | привет  |
 |  2 |  1  | медвед  |

нужно выбрать пользователей из БД при этом в отдельный массив выбрать
сообщения которые им предназначены. Если их нет, то массив должен
быть пуст.

SELECT
    user.*,
    array_agg(messages.message) AS messages
FROM
    users AS user
LEFT JOIN users_messages AS messages ON messages.uid = user.id

WHERE
    "user"."id" IN (1, 2)

GROUP BY
    user.id

Выбирает в последний столбик либо массив сообщений которые есть, либо
{NULL} если таковых нет.

то есть будет выбрано нечто вроде

 | 1 | ... | {привет,медвед} |
 | 2 | ... | {NULL}          |

где ... - остальные поля в users

--

. ''`.                               Dmitry E. Oboukhov
: :’  :   email: unera@debian.org jabber://UNera@uvw.ru
`. `~’              GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537

Вложения

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

Предыдущее
От: "Dmitry E. Oboukhov"
Дата:
Сообщение: Re: Аггрегаторные функции: исключить NULL
Следующее
От: Alexey Klyukin
Дата:
Сообщение: Re: [pgsql-ru-general] Аггрегаторные функции: исключить NULL