Re: Classes, Inheritance, and Children - Mailing list pgsql-sql

From Oliver Elphick
Subject Re: Classes, Inheritance, and Children
Date
Msg-id 200007270901.e6R91pA23448@linda.lfix.co.uk
Whole thread Raw
In response to Classes, Inheritance, and Children  (Thomas Swan <tswan@olemiss.edu>)
List pgsql-sql
Thomas Swan wrote: >I think I may have asked this before... If I did I'm sorry, but maybe this  >attempt, assuming a
priorone, may be a little more clear. > >create table foo (id int8); >create table bar1 (name text) inherits (foo);
>createtable 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 : > >id >--- >
1>  2 >  3 >  4
 

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  >expand children? > >I had originally hoped
thatSELECT * 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.Elphick@lfix.co.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:

Previous
From: "Vladimir Terziev"
Date:
Subject: Large text insertion
Next
From: JanWieck@t-online.de (Jan Wieck)
Date:
Subject: Re: Large text insertion