Zum Inhalt springen

SELECT mit create Table


TheManWho

Empfohlene Beiträge

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...