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 :
  >
  >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 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                                [EMAIL PROTECTED]
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 


Reply via email to