Ausgesuchte Spalten von einer Tabelle in eine vorhandene kopieren

catosan

Benutzer
Beiträge
7
Hallo miteinander,

ich habe 2 Tabellen in meiner Anwendung. Tabelle1 und Tabelle2. Beide sind nahezu identisch aufgebaut, jedoch wurde die Tabelle2 später erstellt und hat nicht alle Inhalte von Tabelle1, bzw. während der Erstellung wurde weiterhin Tabelle1 befüllt. Dh meine Tabelle2 hat Lücken, die ich auffüllen möchte. Am liebsten per SQL Befehle, damit meine Anwender die Arbeit mit Tabelle1 nicht nochmal für Tabelle2 machen müssen.
Gemeinsam haben beide Tabellen die Spalten Nummer und Termin.
Wie beschrieben, hat Tabelle1 die aktuellen Daten (Nummer und Termin) und die Tabelle2 hat Lücken in den Terminen.
Wie lautet der Code um jede Nummer in Tabelle1 mit der gleichen in Tabelle2 zu vergleichen und ggfs den Termin zu ergänzen?
Vielen Dank im Voraus.

Trung
 
Werbung:
bzw. vielleicht auch ein einfaches INSERT:

Code:
test=*# select * from tabelle1;
 nummer |   termin   
--------+------------
      1 | 2020-01-01
      2 | 2020-01-02
      3 | 2020-01-03
      5 | 2020-01-05
      7 | 2020-01-07
(5 rows)

test=*# select * from tabelle2;
 nummer |   termin   
--------+------------
      4 | 2020-01-04
      6 | 2020-01-06
(2 rows)

test=*# insert into tabelle2 select * from tabelle1;
INSERT 0 5
test=*# select * from tabelle2 order by nummer;
 nummer |   termin   
--------+------------
      1 | 2020-01-01
      2 | 2020-01-02
      3 | 2020-01-03
      4 | 2020-01-04
      5 | 2020-01-05
      6 | 2020-01-06
      7 | 2020-01-07
(7 rows)

test=*#

Kommt drauf an, ob die Datensätze mit der Nummer schon da, aber leer sind, oder schlich fehlen, wie oben gezeigt. Das ist nicht ganz klar.
 
Hallo akretschmer,

vielen Dank für die schnelle Antwort.
Wie kann der Code lauten, wenn in Tabelle1 und 2 die Nummer existieren. Nur in Tabelle2 fehlt der Termin. Und genau dieser soll übertragen werden.
Ich muss in der Tabelle1 eine Nummer auslesen, diese in Tabelle2 nachschlagen und ggfs einen Termin in Tabelle2 nachtragen.
Und da bin ich noch nicht soweit in SQL, das hinzubekommen.
Danke dir vorab.

VG

Trung
 
Code:
test=# select * from tabelle1;
 nummer |   termin   
--------+------------
      1 | 2020-01-01
      2 | 2020-01-02
      3 | 2020-01-03
      5 | 2020-01-05
      7 | 2020-01-07
      8 | 2020-01-08
      9 | 2020-01-09
(7 rows)

test=*# select * from tabelle2;
 nummer |   termin   
--------+------------
      4 | 2020-01-04
      6 | 2020-01-06
      1 | 2020-01-01
      2 | 2020-01-02
      3 | 2020-01-03
      5 | 2020-01-05
      7 | 2020-01-07
      8 |
      9 |
(9 rows)
test=*# update tabelle2 set termin = tabelle1.termin from tabelle1 where tabelle1.nummer=tabelle2.nummer and tabelle2.termin is null;
UPDATE 2
test=*# select * from tabelle2;
 nummer |   termin   
--------+------------
      4 | 2020-01-04
      6 | 2020-01-06
      1 | 2020-01-01
      2 | 2020-01-02
      3 | 2020-01-03
      5 | 2020-01-05
      7 | 2020-01-07
      8 | 2020-01-08
      9 | 2020-01-09
(9 rows)
 
Dankeschön.
Ich habe allerdings diese Fehlermeldung zurückbekommen. Ich weiß gar nichts damit anzufangen.

ORA-00933: SQL command not properly ended
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_180100", line 548
ORA-06512: at "SYS.DBMS_SYS_SQL", line 1658
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_180100", line 534
ORA-06512: at "APEX_180100.WWV_FLOW_DYNAMIC_EXEC", line 1919

VG

Trung
 
Werbung:
Zurück
Oben