creamycewie
Goto Top

TSQL - IF Exists

Hallo,

ich habe folgendes Problem:


Ich habe eine SQL-Select-Abfrage. Diese sieht folgendermaßen aus:

select("bemerkung from arpreis where artikelnummer = '" + {:Artikel} + "' and preistyp = 'K' and typnummer = '" + {:Adressnummer} + "'")  

Diese Abfrage funktioniert, wenn es einen Datensatz gibt, der die Kriterien erfüllt.

Nun brauche ich jedoch eine Abfrage, welche folgendes macht.

WENN das Select ein Ergbniss liefert, soll der Wert des Ergebnisses ausgegeben werden.
WENN es jedoch keinen entsprechenden Datensatz gibt, soll ein fixer Wert (zB "1234") ausgegeben werden.

Ich habe es schon mit folgendem Snippet versucht:

IF ( select("bemerkung from arpreis where artikelnummer = '" + {:Artikel} + "' and preistyp = 'K' and typnummer = '" + {:Adressnummer} + "'")= '' or select("bemerkung from arpreis where artikelnummer = '" + {:Artikel} + "' and preistyp = 'K' and typnummer = '" + {:Adressnummer} + "'") = 0 ; '1234' ; select("bemerkung from arpreis where artikelnummer = '" + {:Artikel} + "' and preistyp = 'K' and typnummer = '" + {:Adressnummer} + "'")  )  

hier erhalte ich jedoch folgenden Fehler:

error

wo bin ich hier daneben?

Ich habe es auch mit IF EXISTST .... versucht, auch hier immer ein Syntaxfehler.


Danke & LG
'
Creamy

Content-Key: 375320

Url: https://administrator.de/contentid/375320

Printed on: April 24, 2024 at 17:04 o'clock

Member: ukulele-7
ukulele-7 May 28, 2018 at 14:21:08 (UTC)
Goto Top
Normalerweise ist CASE WHEN 1=1 THEN 1 WHEN 1=2 THEN 2 ELSE 3 END dein Freund. Ich finde allerdings deine ganze Syntex merkwürdig, über welchen SQL Server und welchen Client reden wir hier?
Member: CreamyCewie
CreamyCewie May 28, 2018 at 14:26:02 (UTC)
Goto Top
Server: SQL Server 2016 Standard
Client: SelectLine Warenwirtschaft

Die grundlegende Syntax ist mir klar.
Wenn ich if ( 1+1 = 2 ; 1 ; 2) eingebe, funktioniert es.
Wenn ich nur mein Select-Statement eingebe, funktioniert es auch.

Wenn ich die 2 befehle jedoch kombiniere, bekommen ich den Syntax-Error
Member: em-pie
em-pie May 28, 2018 at 20:04:05 (UTC)
Goto Top
Moin,

Baue dein Subselect in der IF-Abfrage doch in ein (Inner)-Join ein und arbeite dann, wie oben schon vorgeschlagen, in ein CASE ... WHEN... -Statement ein...

Das ist wesentlich handlicher / übersichtlicher und insbesondere Performanter, da du so das Statement nur einmal ausführst und nicht für jeden Datensatz erneut.

Gruß
em-Pie
Member: ukulele-7
ukulele-7 Jun 01, 2018 at 07:27:32 (UTC)
Goto Top
Das ist in jedem Fall zu empfehlen.