INSERT nur wenn nicht vorhanden [ERLEDIGT]

Advantage Database Server

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

INSERT nur wenn nicht vorhanden [ERLEDIGT]

Beitrag von Manfred »

Es ist mal wieder zum Mäusemelken. Was ist hier dran falsch?

Code: Alles auswählen

INSERT INTO gemeinsameDaten.abwesenheitstage (datum,genehmigt,idfahrer,idfreizeitarten,urlaubaus)
VALUES('2023-03-07',TRUE,'872                                 ','1                                   ',2023)
WHERE NOT EXISTS (SELECT idfahrer, datum FROM gemeinsameDaten.abwesenheitstage WHERE idfahrer='872                                 ' AND datum ='2023-03-07')
poQuery: Error 7200: AQE Error: State = 42000; NativeError = 2117; [SAP][Advantage SQL Engine]Unexpected token: WHERE -- Expecting semicolon. -- Location of error in the SQL statement is: 208 (line: 3 column: 1)
ich habe ein ";" hinter Values gemacht und auch hinter where. Nichs zu machen. :banghead: :banghead: :banghead:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: INSERT nur wenn nicht vorhanden

Beitrag von Marcus Herz »

Oder so

Code: Alles auswählen

MERGE gemeinsameDaten.abwesenheitstage
on idfahrer='872' AND datum ='2023-03-07'
when not exists then insert  (datum,genehmigt,idfahrer,idfreizeitarten,urlaubaus)
VALUES('2023-03-07',TRUE,'872','1',2023)
Ich würd auf jedem Fall die rechten Blanks entfernen. Wahrscheinlich liegst daran. Trailing Blanks werden nicht gespeichert.
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: INSERT nur wenn nicht vorhanden

Beitrag von Manfred »

oh, ich hatte gar nicht gewußt, das man MERGE auch als INSERT benutzen kann. Ich hatte das nur im Zusammenhang mit APPEND aus einer anderen Tabelle gesehen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: INSERT nur wenn nicht vorhanden

Beitrag von Manfred »

was mich jetzt aber trotzdem wundert ist, das der Insert Befehl nicht klappt. Der sollte lt. Internetrecherche klappen. Zumindest wird der so vorgeschlagen. Oder spielt das ADS nicht mit?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: INSERT nur wenn nicht vorhanden

Beitrag von Manfred »

das muß wohl so heißen

Code: Alles auswählen

MERGE gemeinsameDaten.abwesenheitstage
ON idfahrer='872' AND datum ='2023-03-06'
WHEN NOT MATCHED THEN INSERT (datum,genehmigt,idfahrer,idfreizeitarten,urlaubaus) VALUES ('2023-03-06',TRUE,'872','1', 2023)
MATCHED wird verlangt nicht EXISTS
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: INSERT nur wenn nicht vorhanden

Beitrag von nightcrawler »

WHERE geht nicht bei INSERT, sondern dann im Zusammenhang mit SELECT....

Code: Alles auswählen

INSERT INTO .... SELECT .... FROM WHERE ...
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Antworten