SQL 2005 - IF (Select gleich leer)

Mitglied: Fred666

Fred666 (Level 1) - Jetzt verbinden

18.07.2011 um 15:32 Uhr, 4161 Aufrufe, 6 Kommentare

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
Mitglied: it-frosch
18.07.2011 um 15:45 Uhr
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
Bitte warten ..
Mitglied: Fred666
18.07.2011 um 16:01 Uhr
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
Bitte warten ..
Mitglied: it-frosch
18.07.2011 um 16:22 Uhr
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
Bitte warten ..
Mitglied: Fred666
18.07.2011 um 17:05 Uhr
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!
Bitte warten ..
Mitglied: MadMax
18.07.2011 um 21:59 Uhr
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
Bitte warten ..
Mitglied: Fred666
20.07.2011 um 10:06 Uhr
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
Bitte warten ..
Heiß diskutierte Inhalte
MikroTik RouterOS
Simples VLAN bringt mich zur Verzweiflung
gelöst Daniel26Vor 1 TagFrageMikroTik RouterOS30 Kommentare

Moin, ich bin sehr neu im Mikrotik-Bereich, aber schon dabei, aufzuegeben. Wir verbauen in unserer Hardware Switche von Mikrotik. Bisher waren da Netgear-Teile drin, ...

Microsoft
STRG + ALT + ENTF
TezzlaVor 1 TagAllgemeinMicrosoft12 Kommentare

Mahlzeit zusammen, wir haben gerade im Kollegenkreis über Sinn und Unsinn der Sperrbildschirmentriegelung STRG + ALT + ENTF unter Win10 diskutiert. Mich würde hierzu ...

Video & Streaming
Streamingplattform mit eigenen Servern
gelöst icegetVor 1 TagFrageVideo & Streaming6 Kommentare

Hallo liebe Community, ich würde gerne via Amazaon AWS (oder andere Cloudanbietern) mehrere Serverinstanzen (Streaming) starten, um z.B. 2000 Personen den selben Stream den ...

Windows Netzwerk
Telefone im Netzwerk bekannt machen
jannik0205Vor 19 StundenFrageWindows Netzwerk13 Kommentare

Hallo Zusammen, In unserem Unternehmen gibt es eine Telefonanlage mit eigenem Telefonienetz (192.168.5.X). Schließe ich ein Telefon an eine Netzwerkdose, bekommt es vom DHCP- ...

Hardware
Outdoor LAN sichern mit oder ohne Fritzbox Verständnis Frage
bluescreenVor 1 TagFrageHardware14 Kommentare

Hallo zusammen, ich habe die letzten Stunden schon viel hier gelesen, stehe aber ein wenig auf dem Schlauch, wie und wo ich weiter suchen ...

Windows 10
Windows 7 pro Lizenz nutzen für Windows 10
lukas0209Vor 14 StundenFrageWindows 1013 Kommentare

Hallo Community, ich versuche seit einigen Wochen unser Netzwerk von Windows Server 2008 R2 Standard auf Windows Server 2016 Essentials um, welches eine städtische ...

Windows Server
Nutzer als lokaler Admin in Windows Server 2019
hanheikVor 1 TagFrageWindows Server6 Kommentare

Hallo, in SBS 2011 konnte ich ganz einfach einen Nutzer als lokalen Admin einstellen. Windows fragte dann, für welchen Rechner; Rechner auswählen; fertig! In ...

Switche und Hubs
Zwei Lancom GS-315XP Switche VLAN verbinden
wieoderwasVor 1 TagFrageSwitche und Hubs14 Kommentare

Hallo zusammen, wir haben zwei neue Lancom GS-315XP Switche bekommen. An einem dieser Switche sind Lancom Accesspoints angeschlossen. Ich verzweifel gerade an der Verbindung ...