From: | Josh Berkus <josh(at)agliodbs(dot)com> |
---|---|
To: | Rachel Coin <rachel(at)derniere-minute(dot)org> |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: Categories and subcategories : more details |
Date: | 2001-03-20 17:43:20 |
Message-ID: | 3AB796B8.AD87AE95@agliodbs.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-admin pgsql-sql |
Rachel,
See below:
> Examples :
>
> table CATEG :
> ida categ
> 1 X
> 2 Y
> 3 Z
>
> table SUBCATEG :
> idb subcateg ida
> 1 x1 1
> 2 x2 1
> 3 x3 1
> 4 x4 1
> 5 y1 2
> 6 y2 2
> 7 z1 3
>
> I 'd like to obtain a table with maximum 2 subcateg per categ :
>
> table result :
>
> categ subcateg
> X x1
> X x2
> Y y1
> Y y2
> Z z1
>
Without LIMIT in subselects, you're in performance hell as far as doing
the above is concerned. Frankly, I can't see any way to do it that
doesn't involve a PL/pgSQL procedure that generates a temporary table,
and has to run once for every row in your result set. I'll post code
later if nobody comes up with a better solution.
If you knew all of your categories in advance, you could do this via an
annoying UNION statement. I'm assuming, however, that it needs to be
dynamic.
-Josh Berkus
--
______AGLIO DATABASE SOLUTIONS___________________________
Josh Berkus
Complete information technology josh(at)agliodbs(dot)com
and data management solutions (415) 565-7293
for law firms, small businesses fax 621-2533
and non-profit organizations. San Francisco
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2001-03-20 17:52:48 | Re: Re: PostgreSQL; Strange error |
Previous Message | Kelcey Kornegay | 2001-03-20 17:34:53 | Disk space |
From | Date | Subject | |
---|---|---|---|
Next Message | Marios Moutzouris | 2001-03-20 19:23:04 | rows equal |
Previous Message | Rachel Coin | 2001-03-20 16:53:38 | Categories and subcategories : more details |