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

Re: Classes, Inheritance, and Children

From: "Oliver Elphick" <olly(at)lfix(dot)co(dot)uk>
To: Thomas Swan <tswan(at)olemiss(dot)edu>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Classes, Inheritance, and Children
Date: 2000-07-27 09:01:50
Message-ID: (view raw or whole thread)
Lists: 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 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 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 :
  >  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                                Oliver(dot)Elphick(at)lfix(dot)co(dot)uk
Isle of Wight                    
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 WieckDate: 2000-07-27 09:39:32
Subject: Re: Large text insertion
Previous:From: Vladimir TerzievDate: 2000-07-27 08:30:26
Subject: Large text insertion

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