PDA

View Full Version : Zu blöde ................................



DKSPROFI
25-02-21, 10:43
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

mk
25-02-21, 10:54
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 :-)

Andreas_Prouza
25-02-21, 11:08
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

DKSPROFI
25-02-21, 13:41
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

Fuerchau
25-02-21, 14:01
Normalerweise nimmt man ja mit dem Where Bezug zur einzufügenden Datei.

Andreas_Prouza
25-02-21, 14:14
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)

B.Hauser
25-02-21, 16:58
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:


Insert into LibB.Datei1
( Select * from LibA.Datei1
Except
Select * from LibB.Datei1);

Birgitta