fred666
Goto Top

SQL 2005 - IF (Select gleich leer)

Hi,

eine kleine Frage:

wie fange ich am einfachsten eine Selcect anweisung ab, die nichts findet?!?

also so in der Art:

IF (IS NULL(SELECT ...))
Begin
END


grüße Fred

Content-Key: 169942

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

Printed on: April 23, 2024 at 10:04 o'clock

Member: it-frosch
it-frosch Jul 18, 2011 at 13:45:39 (UTC)
Goto Top
Hallo Fred,

vielleicht ein count(*) auswerten?
Wenn das 0 ist dann gab es auch keine Datensätze.

Genauere Antworten kann man dir geben wenn du etwas mehr den Zusammenhang beschreibst.

grüße vom it-frosch
Member: Fred666
Fred666 Jul 18, 2011 at 14:01:04 (UTC)
Goto Top
Hi,

okey mein Fehler...
also ich habe eine SELECT-Anweisung, welche mir aus verschiedenen Tabellen Spalten auswählt, und manche noch verrechnet etc. Es gibt auch eine Spalte: Freie_Räume
Als WHERE Bedingung habe ich @datum < '2011-06-27 11:00:00'

So nun will ich wissen ob er was gefunden hat.
Wenn ja, dann rechnet er was aus und fügt es in die Spalte 'Freie_Räume' ein. Wenn nicht, dann soll er die maximal zulässige Anzahl an Räumen in diese Spalte einfügen.

Meine Frage war deshalb kann ich die SELECT-Anweisung irgendwie mit einer IF (IS NULL...) oder ähnlichem abfragen?!?

Grüße Fred
Member: it-frosch
it-frosch Jul 18, 2011 at 14:22:39 (UTC)
Goto Top
Hallo Fred,

mit dem Select Befehl kannst du m.E. kein Verzweigungen bauen. Das geht nur in einer Stored Procedure.
Soll das ein Report werden oder willst du nur Daten sammeln die du dann in Excel schüttest?
Nutzt du einen Reportgenerator? Wenn ja dann müsstest du das in dem abfangen.

Du könntest für die Spalte auch select count(*) from raeume where raumnummer not in (select raumnummer from raumtermine where termin<="30.07.2011")
nehmen und die entstehende 0 bzw NULL umsetzen.


grüße vom it-frosch
Member: Fred666
Fred666 Jul 18, 2011 at 15:05:22 (UTC)
Goto Top
Hallo it-frosch,

also im Prinzip will ich keine select anweisung verzweigen, sondern lediglich feststellen ob er was gefunden hat. Ich habe es mit Count <>0 versucht und es klappt einwandfrei.

Meine Frage noch: Wenn er was gefunden hat dann soll er mir das in eine neue Temp Tabelle legen. Weisst du vll wie ich eine mit Select ersetllte Tabelle in eine Temp-Tabelle kopiere?!
Der Grund ist der, dass ich anhand von dieser TEmpTabelle dann eine weitere Tabelle fülle die abhängt von anderen Tabellen.

EDIT: ich hätte das jetzt über eine Cursor gelöst der geladen wird mit der Select-Anweisung und in einer While Schleife das nach und nach in die TempTabelle kopiert. Geht das aber auch einfacher???

EDIT 2: bzw. wenn ich das über cursor mache, kann ich mir die count-Abfrage spraren und eher eine Abfrage wie: IF @@FETCH_STATUS <> 0 bezogen auf den Cursor generieren oder ist das totaler Anfänger-Blödsinn von mir?!

Grüße und danke Fred!
Member: MadMax
MadMax Jul 18, 2011 at 19:59:01 (UTC)
Goto Top
Nabend Fred,

zum ersten Teil:
select ... into #TempTab from ...

zum zweiten Teil:
Ja, das mit dem count könntest Du Dir sparen, wenn Du das Problem mit einem Cursor löst, weil der Cursor dann nämlich leer wäre. Cursor würde ich aber nur dann verwenden, wenn es sich nicht vermeiden läßt. Ein einziger Befehl ist nämlich deutlich schneller als eine Schleife mit x inserts.

Gruß, Mad Max
Member: Fred666
Fred666 Jul 20, 2011 at 08:06:46 (UTC)
Goto Top
So HI,

danke für eure Mühen, habe das Problem gelösts bekommen ( mit dem Count (*) <>0)
Scheint wohl bei einer Select-Anweisung der einfachste Weg zu sein!face-smile

Grüße Fred