TheManWho Geschrieben 23. Juli 2004 Teilen Geschrieben 23. Juli 2004 Ich benötige eine SQL-Abfrage die eine Tabelle erzeugt. Das Problem dabei: Der Select greift auf zwei Tabellen zu, in denen ein Feld gleich heißt. Wenn ich also ein select * mache, bekomme ich den Fehler "ORA-00957: Doppelter Spaltenname". Also habe ich angefangen nur einzelne Spalten zu definieren - aber wie ist da bei Oracle die Syntax?? Ich versuche es mit SCHEMA.TABELLE.SPALTE und bekomme "ORA-00904: Ungültiger Spaltenname". Meine Abfrage sieht derzeit so aus: -------- create table zwtab1 as select distinct * from SchemaA.Tab31 TAB1, SchemaB.Tab32 TAB2 where TAB1.NR = TAB2.NR and TAB2.Status = 941; -------- Any ideas?? Muchas gracias! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
johnhaltonx Geschrieben 23. Juli 2004 Teilen Geschrieben 23. Juli 2004 Das problem ist das du eine neue Tabelle anlegst und in der neuen Tabelle logischerweise 2 Spalten gleich heissen würden wenn das statement funktionieren würde.... also statt select * select spalte1,spalte2,spalte3...... from tab1, tab2 where.. und dabie darauf achten das keine doppelten spalten vorhanden sind wenn du den inhalt der gleichnamingen spalten brauchst kannst du je nachdem was du genau machen wilst ein sub-select machen .... where (select spaltex from tab2); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
AxlHammer Geschrieben 23. Juli 2004 Teilen Geschrieben 23. Juli 2004 Probier es mal mit: create table zwtab1 as select distinct TAB1.spaltenname1 neuername1 , TAB1.spaltenname2 neuername2 , ... , TAB2.spaltenname neuername from SchemaA.Tab31 TAB1, SchemaB.Tab32 TAB2 where TAB1.NR = TAB2.NR and TAB2.Status = 941; Ich bin mir nicht ganz sicher, aber bei einer Tabelle kannst du glaub ich auch mit * operieren: create table zwtab1 as select distinct TAB1.* , TAB2.spaltenname1 neuername1 , TAB2.spaltenname2 neuername2 from SchemaA.Tab31 TAB1, SchemaB.Tab32 TAB2 where TAB1.NR = TAB2.NR and TAB2.Status = 941; Gruss, Alex Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
johnhaltonx Geschrieben 23. Juli 2004 Teilen Geschrieben 23. Juli 2004 funktioniert beides :-) create table t3 (wert1 varchar2(10), wert2 varchar2(10)); create table t4 (wert1 varchar2(10), wert3 varchar2(10)); insert into t3 values ('abc','def'); insert into t4 values ('ghi','jkl'); create table zwt as select eins.wert1 as wert4, eins.wert2, zwei.wert1, zwei.wert3 from t3 eins,t4 zwei; Table created. create table zwt as select eins.wert1 as wert4, eins.wert2, zwei.* from t3 eins,t4 zwei; Table created. select * from zwt; WERT4 WERT2 WERT1 WERT3 ---------- ---------- ---------- ---------- abc def ghi jkl Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Moeki Geschrieben 23. Juli 2004 Teilen Geschrieben 23. Juli 2004 hab mir mal sagen lassen, dass laut normalform und so felder nicht gleich heissen dürfen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
johnhaltonx Geschrieben 24. Juli 2004 Teilen Geschrieben 24. Juli 2004 in einer tabelle vielleicht, was macht man denn wenn man eine history tabelle hat in der die Daten der Haupttabelle nach 12 Monaten online archiviert werden ? da heissen alle Spalten gleich...... Also man sollte das im prinzipiellen Design vermeiden weil es zu verwechslingen führen kann, aber gerade bei sachen wie Archivierung/Backup, History Tabellen und Replikation gibt es das logischerweise andauernd Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.