Re: Adding columns to a view

Поиск
Список
Период
Сортировка
От Jim C. Nasby
Тема Re: Adding columns to a view
Дата
Msg-id 20060105233148.GD43311@pervasive.com
обсуждение исходный текст
Ответ на Re: Adding columns to a view  (Ingo van Lil <ingo@vanlil.de>)
Список pgsql-general
On Wed, Dec 28, 2005 at 07:29:28PM +0100, Ingo van Lil wrote:
> Now, if I want to get a list of users that have a certain combination of
> valid status entries (e.g. all users that have paid their annual fee and
> are not banned for some reason), I have to use several subselects:
>
> SELECT person_id FROM person WHERE
>     EXISTS (SELECT 1 FROM status WHERE status_id=1
>             AND CURRENT_TIMESTAMP BETWEEN valid_from AND valid_until)
>     AND NOT
>     EXISTS (SELECT 1 FROM status WHERE status_id=2
>             AND CURRENT_TIMESTAMP BETWEEN valid_from AND valid_until);
>
> This is what I'd like to simplify: My matrix view should contain one
> line for each user and one boolean column for each possible status flag.
> The field content should be 'true' if the selected user has a currently
> valid status entry assigned to it. The above statement could be written
> a great deal shorter as:
>
> SELECT person_id FROM person_status_matrix WHERE paid AND NOT banned;

Another alternative would be to create a check_status function that
did the lookup for you. If done correctly (as in using SQL as the
language and setting it to STABLE), the optimizer should inline the
fuction, giving you the same performance as the 1st query but without
all the typing (btw, isn't that first query missing person_id as part of
the WHERE clause in the EXISTS subqueries?)
--
Jim C. Nasby, Sr. Engineering Consultant      jnasby@pervasive.com
Pervasive Software      http://pervasive.com    work: 512-231-6117
vcard: http://jim.nasby.net/pervasive.vcf       cell: 512-569-9461

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

Предыдущее
От: Bjørn T Johansen
Дата:
Сообщение: Hardware recommendation for PostgreSQL on Windows?
Следующее
От: "Qingqing Zhou"
Дата:
Сообщение: Re: Hardware recommendation for PostgreSQL on Windows?