Skip site navigation (1) Skip section navigation (2)

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

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 (view raw or flat)
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

In response to

pgsql-ru-general by date

Next:From: Alexey KlyukinDate: 2011-11-16 15:02:10
Subject: Re: [pgsql-ru-general] Аггрегаторные функции: исключить NULL
Previous:From: Dmitry E. OboukhovDate: 2011-11-16 11:10:55
Subject: Re: Аггрегаторные функции: исключить NULL

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group