Announcement

Collapse
No announcement yet.

Zwei Tabellen vergleichen und in die zweite Daten eintragen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zwei Tabellen vergleichen und in die zweite Daten eintragen

    Hallo,

    ich hoffe die Überschrift trifft in etwa das was ich brauche. Ich habe derzeit einen kleinen Hänger.

    Ich habe zwei Tabellen die eine ID als ForeignKEy haben. Diese ID ist bei beiden Tabellen auch gleichzeitig dr Primary Key. Nun habe ich in der Tabelle1 zu bestimmten IDs Werte zugeordnet. Ich möchte jetzt in der Tabelle2 prüfen, ob die ID bereits eingetragen ist, dann soll sich hier nichts ändern. Wenn in der Tabelle2 die ID aus Tabelle1 noch nicht vorhanden ist, soll dieser Wert in Tabelle2 eingetragen werden.

    Wie kann ich das am günstigsten lösen??

    Ich habe mich gerade an Cursorn versucht, komme hier aber irgendwie nicht so recht weiter.

    Bin für jeden Gedankenanstoss dankbar.

    Eldri

  • #2
    Sinngemäß so:

    INSERT INTO tabelle2
    SELECT *
    FROM tabelle1
    WHERE tabelle1.ID NOT IN ( SELECT tabelle2.ID
    FROM tabelle2);

    kuemmelchen

    Comment


    • #3
      Viele lieben Dank, das wars schon. Da war ich wohl wieder betriebsblind, ich habe nämlich zuvor auch schon eine Menge Bedingungen, da habe ich das einfachste wohl übersehen.

      Danke für die Superschnelle Antwort

      Eldri

      Comment


      • #4
        Oder Merge benutzen, dort kann man UPDATE und INSERT kombinieren (ab ORACLE 10) (hier nur INSERT):
        Code:
        MERGE INTO tabelle2 ziel
           USING   tabelle1 quelle
           ON (quelle.id = ziel.id)
           WHEN NOT MATCHED THEN 
            INSERT (ziel.ID,...)
            VALUES (quelle.ID,...)
        Zu spät

        Comment


        • #5
          @ jum
          MERGE gibt es schon ab Oracle 9

          kuemmelchen

          Comment


          • #6
            Ja @kuemmelchen Du hast Recht - aber irgendwie waren MATCHED und NOT MATCHED nicht optional, mussten also beide hingeschrieben werden, selbst wenn man nur eine brauchte, das obige Statement läuft daher erst ab ORACLE 10.

            Comment

            Working...
            X