Re: Selecting from table into an array var

From: Merlin Moncure <mmoncure(at)gmail(dot)com>
To: Postgres User <postgres(dot)developer(at)gmail(dot)com>
Cc: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>, pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: Selecting from table into an array var
Date: 2009-12-19 14:56:05
Message-ID: b42b73150912190656v14b814cfu1014d34d01022cc1@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Sat, Dec 19, 2009 at 1:05 AM, Postgres User
<postgres(dot)developer(at)gmail(dot)com> wrote:
>
> BEGIN
> SELECT array_agg(category_id) INTO cat_list FROM (
>         WITH RECURSIVE subcategory AS
>                (
>                SELECT * FROM category
>                WHERE category_id = p_category_id
>
>                UNION ALL
>
>                        SELECT c.*
>                        FROM category AS c
>                        INNER JOIN subcategory AS sc ON (c.category_id = sc.parent_id)
>                )
>                SELECT category_id FROM subcategory
>                ORDER BY Coalesce(parent_id, 0) DESC
>  ) c;
> END;

works for me (i didn't put any data in though). the above is probably
better written using array() notation as I mentioned above:

SELECT array
(
WITH RECURSIVE subcategory AS
(
SELECT * FROM category
WHERE category_id = p_category_id
UNION ALL
SELECT c.*
FROM category AS c
INNER JOIN subcategory AS sc ON (c.category_id = sc.parent_id)
)
SELECT category_id FROM subcategory
ORDER BY Coalesce(parent_id, 0) DESC
) INTO cat_list;

Also if you want more than just the ID stacked in the array the above
can be reworked in to an array of the 'category' type.

merlin

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Chris Ernst 2009-12-19 15:20:33 Re: Extracting SQL from logs in a usable format
Previous Message Chris Ernst 2009-12-19 14:28:08 Re: Extracting SQL from logs in a usable format