Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[gelöst] NULL bei SELECT als Ergebnis verhindern
sgnirdrol
myCSharp.de - Member



Dabei seit:
Beiträge: 16

Themenstarter:

[gelöst] NULL bei SELECT als Ergebnis verhindern

beantworten | zitieren | melden

verwendetes Datenbanksystem: MSSQL 2012

Hallo zusammen,

wir wollen in einer Datenbank überprüfen ob es doppelte Einträge gibt.

Folgendes setzten wir momentan als Abfrage ein:

SELECT count(fldAuftrag) as anz
FROM tblTempAlpha
WHERE fldWorkTime IS NULL
GROUP BY fldAuftrag
HAVING count(*) > 1

Das Problem ist, wenn es keinen doppelten Eintrag gibt (was so sein sollte) geht die Abfrage auf NULL. Unser Überwachungstool welches die Abfrage in regelmäßigen Abständen ausführt, kann aber mit NULL-Werten nicht wirklich was anfangen.

Habt ihr eine Idee wie man evtl. die Abfrage anpassen könnte, damit keine NULL-Ergebnisse auftauchen.

~ sgnirdrol
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von sgnirdrol am .
-----------------------------------------------
Two Damn Geeks - 2dmg.org - Andorim
-----------------------------------------------
Andorim's Blog - blog.andorim.de - Andorim
-----------------------------------------------
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2461
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

Hallo sgnirdrol,

du kannst mit if/else-Konstrukten arbeiten:

IF...ELSE (Transact-SQL)
in Verbindung mit
RETURN (Transact-SQL)

Oder du gibst die Anzahl der Rows im Query zurück

@@ROWCOUNT (Transact-SQL)

Habs jetzt nicht getestet, aber damit solltest du hinkommen.

Gruss

Coffeebean
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 862
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

Oder einfach ISNULL
private Nachricht | Beiträge des Benutzers
sgnirdrol
myCSharp.de - Member



Dabei seit:
Beiträge: 16

Themenstarter:

beantworten | zitieren | melden

Danke für die Antworten!

Ich habe es mit einer Prozedur gelöst, mit Hilfe von den Links die Coffeebean geschrieben hatte.

Die Prozedur:

CREATE PROCEDURE [dbo].[checktbltmpAlpha] AS
IF (
SELECT count(*)
FROM tblTempAlpha
WHERE fldWorkTime IS NULL
GROUP BY fldAuftrag
HAVING count(*) > 1 ) = null 
RETURN 0
ELSE 
RETURN (SELECT count(*)
FROM tblTempAlpha
WHERE fldWorkTime IS NULL
GROUP BY fldAuftrag
HAVING count(*) > 1)

Der Prozedur Aufruf:
DECLARE	@return_value int

EXEC	@return_value = [dbo].[checktbltmpAlpha]

SELECT	'Return Value' = @return_value

~ sgnirdrol
-----------------------------------------------
Two Damn Geeks - 2dmg.org - Andorim
-----------------------------------------------
Andorim's Blog - blog.andorim.de - Andorim
-----------------------------------------------
private Nachricht | Beiträge des Benutzers
BhaaL
myCSharp.de - Member

Avatar #erP6yAFiewXrJTqrvg6R.jpg


Dabei seit:
Beiträge: 656

beantworten | zitieren | melden

Wie wärs mit COALESCE?
select coalesce(count(*), 0) from tblTmpAlpha where ...


Edit: ups, das Having übersehen. Damit funktionierts natürlich nicht. Es kommt nämlich kein Null zurück, sondern keine Ergebniszeile. Wäre auch komisch gewesen wenn count(...) ein Null liefern würde.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von BhaaL am .
private Nachricht | Beiträge des Benutzers