From: | "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org> |
---|---|
To: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: Аггрегаторные функции: исключить NULL |
Date: | 2011-11-16 13:15:56 |
Message-ID: | 20111116131555.GC8695@apache.rbscorp.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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(at)debian(dot)org jabber://UNera(at)uvw(dot)ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
From | Date | Subject | |
---|---|---|---|
Next Message | Alexey Klyukin | 2011-11-16 15:02:10 | Re: [pgsql-ru-general] Аггрегаторные функции: исключить NULL |
Previous Message | Dmitry E. Oboukhov | 2011-11-16 11:10:55 | Re: Аггрегаторные функции: исключить NULL |