View Definition mit doppeltem Spaltennamen geht nicht

Hallo zusammen,

ich probiere aktuell PostgreSQL in der Version 8.4 (die Anwendung ist nur für 8.4 zugelassen) aus und möchte ein paar Views definieren.

In einer view soll eine Tabelle doppelt referenziert werden, dabei erhalte ich aber den Fehler:
“FEHLER: Spalte »name« mehrmals angegeben, SQL Status:42701”

Befehl: create view test_view as select * from tab t1, tab t2 where t1.id=t2.id

Natürlich ist in der doppelt refernzierten Tabelle die Spalte “Name” doppelt enthalten, aber ich benötige die Tabelle eben in 2 Rollen in der View.
Das reine Select-Statement ohne es in einer View-Definition zu verwenden, funktioniert natürlich.

Kann ich in Postgre SQL keine Sichten mit mehrfacher Referenz einer Tabelle erstellen oder geht das irgendwie?

Das geht, du must halt der Spalte im VIEW einen anderen namen geben, so a la: select t1.name as t1_name, t2.name as t2_name from t1, t2 …

Btw.: welche Anwendung geht nur mit 8.4 und nicht mit 9.0? Ich halte solche Behauptungen für ein Gerücht …

Andreas

Ok, auf die Umbenennung war ich auch gekommen. Gibt es keine Möglichkeit, dass es automatisch nach den Tabellenkürzeln benannt wird, also t1.name, t2.name etc… so dass ich das nicht manuell machen muss?
Bei Select wird es ja auch automatisch so gemacht, wenn ich es nicht in einer View Definition verwende.

ads=# create table t1 (id serial, name data);
NOTICE:  CREATE TABLE will create implicit sequence "t1_id_seq" for serial column "t1.id"
ERROR:  type "data" does not exist
ZEILE 1: create table t1 (id serial, name data);
                                          ^
ads=# create table t1 (id serial, data text);
NOTICE:  CREATE TABLE will create implicit sequence "t1_id_seq" for serial column "t1.id"
CREATE TABLE
ads=# create table t2 (id serial, data text);
NOTICE:  CREATE TABLE will create implicit sequence "t2_id_seq" for serial column "t2.id"
CREATE TABLE
ads=# select t1.*, t2.* from t1 join t2 on id;
ERROR:  column reference "id" is ambiguous
ZEILE 1: select t1.*, t2.* from t1 join t2 on id;

Funktioniert offensichtlich auch nicht …