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

Re: Flattening a kind of 'dynamic' table

From: Dawid Kuroczko <qnex42(at)gmail(dot)com>
To: Alexandre Leclerc <alexandre(dot)leclerc(at)gmail(dot)com>
Cc: PERFORM <pgsql-performance(at)postgresql(dot)org>
Subject: Re: Flattening a kind of 'dynamic' table
Date: 2005-01-28 08:07:59
Message-ID: 758d5e7f050128000716f28a59@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-performance
On Thu, 27 Jan 2005 12:43:56 -0500, Alexandre Leclerc
<alexandre(dot)leclerc(at)gmail(dot)com> wrote:
> On Thu, 27 Jan 2005 17:27:40 +0100, Dawid Kuroczko <qnex42(at)gmail(dot)com> wrote:
> > On Thu, 27 Jan 2005 10:23:34 -0500, Alexandre Leclerc
> > <alexandre(dot)leclerc(at)gmail(dot)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. ;)

In response to

Responses

pgsql-performance by date

Next:From: Sebastian BöckDate: 2005-01-28 12:30:29
Subject: Re: Optimizing Outer Joins
Previous:From: Thomas F.O'ConnellDate: 2005-01-28 06:28:58
Subject: Re: Triggers During COPY

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