Hans: Oracle-SQL Teile von Tabellen kopieren

Beitrag lesen

Hi !

Interal_ID - soll mit einer Sequence eingefügt werden.
FREMD_ID_1 - Inhalt soll aus Tabelle Q1 kopiert werden.
FREMD_ID_2 - Inhalt soll aus Tabelle Q1 kopiert werden.
TITLE - soll aus Q2 kommen
ORT - soll aus Q2 kommen

Zur weiteren Erläuterung: In der jetzigen Version ist
Q1.FREMD_ID_2 in Q2 ein Foreign Key

I.E.

Tabelle Q1:      Tabelle Q2:
FREMD_ID_2  ---> REF_FREMD_ID_2   TITLE    ORT
   1                   1            bla     bla

Na, dann hast Du doch schon alles.

insert into neue_tabelle (internal_id, fremd_id_1, fremd_id_2, title, ort)
   select sequenz_id.nextval, q1.fremd_id_1, q1.fremd_id_2, q2.title, q2.ort
   from tabelle_q1 q1, tabelle_q2 q2
   where q1.fremd_id_2=q2.ref_fremd_id_2
   and q1.fremd_id in (select fremd_id_1
                       from tabelle_q1
                       minus
                       select fremd_id_1 from neue_tabelle)
   ;

Über die where-Beziehung greifst Du nur auf die Datensätze in Tabelle Q2 zu, die sich über den foreign-key in Tabelle Q1 befinden. Dazu wird bei dem and-Teil sichergestellt, daß Du nicht immer die gleichen Datensätze in die neue_tabelle schreibst. Mit einem Index auf die fremd_id_1 kannst Du die Geschwindigkeit noch verbessern.

Gruß

Hans