Re: Classes, Inheritance, and Children
От | Oliver Elphick |
---|---|
Тема | Re: Classes, Inheritance, and Children |
Дата | |
Msg-id | 200007270901.e6R91pA23448@linda.lfix.co.uk обсуждение исходный текст |
Ответ на | Classes, Inheritance, and Children (Thomas Swan <tswan@olemiss.edu>) |
Список | 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 по дате отправления: