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-ID: 375320

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

Ausgedruckt am: 23.11.2024 um 04:11 Uhr

ukulele-7
ukulele-7 28.05.2018 um 16:21:08 Uhr
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?
CreamyCewie
CreamyCewie 28.05.2018 um 16:26:02 Uhr
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
em-pie
em-pie 28.05.2018 um 22:04:05 Uhr
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
ukulele-7
ukulele-7 01.06.2018 um 09:27:32 Uhr
Goto Top
Das ist in jedem Fall zu empfehlen.