Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Ausgesuchte Spalten von einer Tabelle in eine vorhandene kopieren

Dieses Thema im Forum "Oracle" wurde erstellt von catosan, 23 Juli 2020.

  1. catosan

    catosan Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    UPDATE oder auch MERGE.
     
  3. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  4. catosan

    catosan Benutzer

    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
     
  5. akretschmer

    akretschmer Datenbank-Guru

    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)
    
     
  6. catosan

    catosan Benutzer

    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
     
  7. akretschmer

    akretschmer Datenbank-Guru

    Ich auch nicht, verwende kein Oraggle. Da ist wohl die Syntax a bissl anders. Ein Blick ins Handbuch kann sinnvoll sein...
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden