[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Nov 2004
    Beiträge
    325

    Zu blöde ................................

    Moin *all,

    obwohl schon x-mal behandelt... Ich bin sowas von Blind, aber was mach ich da falsch?

    Biblothek A enthält DATEI1 mit 100 Sätzen
    Biblothek B enthält DATEI1 mit 50 Sätzen

    INSERT INTO LIBA/DATEI1
    SELECT * FROM LIBB/DATEI1
    where not exists(SELECT * FROM LIBB/DATEI1)

    Dabei sagt er mir Zeile für INSERT nicht gefunden.

    CPYF mit *add wäre da einfacher......

    DATEI1 in Bibltotek enthält dann 150 Sätze. Der Aufbau beider ist immer identisch.

    Kann mir da jemand auf die Srünge helfen?

    mfg

    DKSPROFI

  2. #2
    Registriert seit
    Jan 2001
    Beiträge
    832
    Hi

    wenn keine dupkeys vorhanden sind dann kannst Du die where not exists... weglasssen
    Sonst musst du auch die Keys abfragen

    ein cpy *add würde bei dupkeys auch abbrechen . Es sei denn man stellt das Schlüsselwort ERRLVL auf *NOMAX :-)

  3. #3
    Registriert seit
    Nov 2020
    Beiträge
    315
    Bei NOT EXISTS prüft die DB für jeden Satz einzeln ob du in deiner darin befindenden Abfrage ein Ergebnis bekommst. Bekommst du ein Ergebnis --> kein Insert. Bekommst du keines --> Insert.
    Da du in deinem where not exists(SELECT * FROM LIBB/DATEI1) keine WHERE Bedingung hast, findet er immer einen Satz. --> also kein Insert.

    lg Andreas

  4. #4
    Registriert seit
    Nov 2004
    Beiträge
    325
    Moin,

    vielen Dank. Logisch, aber so gehts jetzt:

    INSERT INTO LIBA/DATEI1
    SELECT * FROM LIBB/DATEI1
    where not exists(SELECT * FROM LIBB/DATEI1 where Feld = : Variable)

    Heute ist nicht mein Tag. Home Office. Am Letzten Wochenende war der ganze Keller ca. 20 cm unter Wasser. Heizkessel kaputt. Nachbar und wir betroffen. Heute der Gutachter des Vermieters, viiieeellll zu machen, alles neu.

    mfg

    DKSPROFI

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Normalerweise nimmt man ja mit dem Where Bezug zur einzufügenden Datei.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Nov 2020
    Beiträge
    315
    Genau, es müsste sowas auf die Art sein:

    INSERT INTO LIBA/DATEI1

    SELECT * FROM LIBB/DATEI1 t1
    where not exists(SELECT * FROM LIBA/DATEI1 t2 where t2.Feld = t1.Feld)

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Nochmal zum Verständnis:
    Du hast 2 Dateien mit gleichem Aufbau, eine in Bibliothek LibA und die andere in Bibliothek LibB.
    In der Datei in Bibliothek LibB befinden sich 50 Sätze, in der Datei in Bibliothek LibA befinden sich 100 Sätze.
    Du möchstest jetzt alle fehlenden Datensätze aus der Datei in Bibliothek LibA in die Datei in Bibliothek LibB übertragen.
    Die vorhandenen (und identischen) Zeilen sollen dabei weder überschrieben noch dupliziert werden.
    Wenn das so ist, versuch's mal mit dem folgenden Statement:

    Code:
    Insert into LibB.Datei1 
    (   Select * from LibA.Datei1
    Except
       Select * from LibB.Datei1);
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. Blöde Frage zum Thema CA Express Drucker Konfig.
    By Timmo in forum NEWSboard Drucker
    Antworten: 2
    Letzter Beitrag: 09-05-01, 12:38

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •