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?
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;