Thomas Swan wrote:
>I think I may have asked this before... If I did I'm sorry, but maybe this
>attempt, assuming a prior one, may be a little more clear.
>create table foo (id int8);
>create table bar1 (name text) inherits (foo);
>create table bar2 (data text) inherits (foo);
>create table hybrid ( ) inherits (bar1, bar2);
>INSERT INTO foo VALUES (1);
>INSERT INTO bar1 VALUES (2,'myname');
>INSERT INTO bar2 VALUES (3,'mydata');
>INSERT INTO hybrid VALUES (4,'morename','moredata');
>I want to do a SELECT * FROM foo*; but I only get the 'id' column as in :
This is correct in object-oriented theory. foo only knows about its own
features; it does not know about additional features of its descendants,
nor should it.
>What would be the query to get the following table or a magical way to
>I had originally hoped that SELECT * FROM foo* would yield the following,
>but it's not so.
>id | name | data
> 1 | null | null
> 2 | 'myname' | null
> 3 | null | 'mydata'
> 4 | 'morename' | 'moredata'
You need to use a UNION of the four tables, with nulls
supplied where necessary:
select * from hybrid -- specify first to establish the
-- column types
union select id, null, null from foo
union select id, name, null from bar1
union select id, null, data from bar2;
Unfortunately, you can't make this a view, because views of unions are
not yet supported.
Oliver Elphick Oliver(dot)Elphick(at)lfix(dot)co(dot)uk
Isle of Wight http://www.lfix.co.uk/oliver
PGP: 1024R/32B8FAA1: 97 EA 1D 47 72 3F 28 47 6B 7E 39 CC 56 E4 C1 47
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A 614D 4C34 3E1D 0C1C
"But the wisdom that is from above is first pure, then
peaceable, gentle, and easy to be intreated, full of
mercy and good fruits, without partiality, and without
hypocrisy." James 3:17
pgsql-sql by date
|Next:||From: Jan Wieck||Date: 2000-07-27 09:39:32|
|Subject: Re: Large text insertion|
|Previous:||From: Vladimir Terziev||Date: 2000-07-27 08:30:26|
|Subject: Large text insertion|