Re: Flattening a kind of 'dynamic' table - Mailing list pgsql-performance

From Dawid Kuroczko
Subject Re: Flattening a kind of 'dynamic' table
Date
Msg-id 758d5e7f050128000716f28a59@mail.gmail.com
Whole thread Raw
In response to Re: Flattening a kind of 'dynamic' table  (Alexandre Leclerc <alexandre.leclerc@gmail.com>)
Responses Re: Flattening a kind of 'dynamic' table
List pgsql-performance
On Thu, 27 Jan 2005 12:43:56 -0500, Alexandre Leclerc
<alexandre.leclerc@gmail.com> wrote:
> On Thu, 27 Jan 2005 17:27:40 +0100, Dawid Kuroczko <qnex42@gmail.com> wrote:
> > On Thu, 27 Jan 2005 10:23:34 -0500, Alexandre Leclerc
> > <alexandre.leclerc@gmail.com> wrote:
> > > Here a normal listing of design.product_department_time:
> > >  product_id | department_id | req_time
> > > ------------+---------------+----------
> > >         906 | A             |     3000
> > >         906 | C             |     3000
> > >         906 | D             |     1935
> > >         907 | A             |     1500
> > >         907 | C             |     1500
> > >         907 | D             |     4575
> > >         924 | A             |     6000
> > >         924 | C             |     1575
> >
> > Well, I did something like this recently; it can be done though
> > maybe not very efficiently...
> >
> > Unfortunately we will need a rowtype with all the departaments:
> > CREATE DOMAIN departaments AS (a int, b int, c int, d int, ...);
> Thank you for this help Dawid, I'll have to take some time to look at
> this suggestion. If I must create a domain with all the departments
> I'll have a problem because the user is creating and deleting
> departments as it pleases him.
>
> Any counter-ideas?

I have exactly the same problem with my proposal [1]
I just wish there would be some "native" rows-to-columns
aggregate.

The other approach I used was something like this:
SELECT product_id, a, b, c FROM
  (SELECT product_id, a FROM pdt) AS a FULL OUTER JOIN USING(product_id)
  (SELECT product_id, b FROM pdt) AS b FULL OUTER JOIN USING(product_id)
  (SELECT product_id, c FROM pdt) AS c;
...or similar (I'm typing from memory ;)).  Anyway it was good for getting
whole table, but performance well, wasn't the gratest. ;)).

   Regards,
      Dawid

[1]: I was thinking about a trigger on a "departaments" table,
and then recreating the aggregate and view as needed, but
it isn't the kind of dynamic I had in mind. ;)

pgsql-performance by date:

Previous
From: Thomas F.O'Connell
Date:
Subject: Re: Triggers During COPY
Next
From: Alexandre Leclerc
Date:
Subject: Re: Flattening a kind of 'dynamic' table