Re: weird structure - Mailing list pgsql-sql

From Renato De Giovanni
Subject Re: weird structure
Date
Msg-id 39A68D36.EADD6043@viafractal.com.br
Whole thread Raw
In response to weird structure  (rdg@viafractal.com.br)
List pgsql-sql
> > Consider the following tables/fields:
> > table "person": fields "p_id", "p_name".
> > table "person_attribute": fields "a_id", "a_name".
> > table "person_data": fields "d_person_id", "d_attribute_id",
> > "d_value".
> >
> > Also consider that a person may not have data related to all possible
> > attributes.
> >
> > Using this structure, how could I retrieve in one row with a single
> > select statement all attributes from a person (showing null to
> > attributes that were not registered to him)?
> >
> > Thanks for any suggestion,
> > --
> > Renato
> > Sao Paulo - SP - Brasil
> > rdg@viafractal.com.br
>
> I did similar things using the following technique:
> in frontend I gather all attributes from person_attribute and then
> generate a query like this:
>
> select *, (select distinct d_value from person_data where d_person_id =
> person.p_id and
> d_attribute_id = 'here first attribute id'), (select distinct d_value
> from person_data where d_person_id = person.p_id and d_attribute_id =
> 'here second attribute id'), ... from person
> --
> Sincerely yours,
> Yury

Yury...
That worked perfectly! Thank you very much!

Tell me, I've never seen this sql construction before, is it specific to
postgres? Or should it also work on other databases?

And is there any relevant performance issue considering this kind of
database schema and its peculiar sql commands?

Thanks again!
--
Renato
Sao Paulo - SP - Brasil
rdg@viafractal.com.br





pgsql-sql by date:

Previous
From: hlefebvre
Date:
Subject: Re: Re: Date of creation and of change
Next
From: Rini Dutta
Date:
Subject: queries and inserts