select count, wenn kein wert zurück kommt dann 0

  • VB.NET
  • .NET (FX) 4.0

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Mono.

    select count, wenn kein wert zurück kommt dann 0

    hallo zusammen,
    ich brauche eure hilfe

    ich habe drei select count abfragen die ein datatable füllen(beispiel)

    SQL-Abfrage

    1. select count(L7) as anzahl
    2. from data
    3. where spalte1 = 'abc'
    4. group by L7
    5. select count(L7) as anzahl
    6. from data
    7. where spalte1 = 'bca'
    8. group by L7
    9. select count(L7) as anzahl
    10. from data
    11. where spalte1 = 'cab'
    12. group by L7


    ergebniss wenn alle werte zurück geben:
    100
    101
    102

    aber wenn nun die zweite abfrage kein wert zurück bekommt, wäre es so:
    100
    102

    ich brauche aber min. wenn kein wert eine 0, das es dann so wäre:
    100
    0
    102

    was kann ich machen? danke
    Ich nehme mal an, dass du die Werte mit einer Programmiersprache abfragst.
    Da der Rückgabewert bei nicht-exestierenden Zeilen in einer Tabelle gleich NICHTS ist ( Zeichenlänge = 0 ), würde ich erstmals die Zeichenlänge anschauen: Ist die Zeichenlänge z = 0; so setze den Rückgabewert auf 0.
    EMPIRE BUSINESS

    P8310 schrieb:

    eine 0
    Gugst Du DbNull und Wert bei IsDbNull.
    Sollte in der DB-Abfrage enthalten sein.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Nö, beim counten (zählen) bekommt man doch kein DbNull, oder?
    Was man machen kann ist folgendes [korrigiert mich wenn ich falsch liege] überprüfen ob ein Wert vorhanden ist und wenn ja diesen Wert bzw. diese Spalte zählen und oder überprüfen ob Count '0' zurückgibt. Schließlich wollen wir ja zählen, da kann ja kein 'Null' kommen, sondern eine Zahl -> Denn '0' ist eine Zahl.

    SQL-Abfrage

    1. IF EXISTS (SELECT 1 FROM L7)

    SQL-Abfrage

    1. IF (SELECT COUNT(*) FROM L7) = 0


    ..oder?


    --
    edit: Grad mal rumprobiert, so würde ich es evtl. machen [getestet auf einem MS SQL Server]
    Gibt 0 für false (nichts) und 1 für true (etwas vorhanden) zurück
    Count

    SQL-Abfrage

    1. DECLARE @bool bit
    2. IF (SELECT count(*) FROM [Datenbank].[dbo].[Tabelle]) = 0
    3. BEGIN
    4. SET @bool = 0
    5. SELECT @bool Err
    6. RETURN
    7. END
    8. Else IF (SELECT count(*) FROM [Datenbank].[dbo].[Tabelle]) >= 1
    9. BEGIN
    10. SET @bool = 1
    11. SELECT @bool Err
    12. RETURN
    13. END
    Option Strict On!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Drahuverar“ ()

    Das funktioniert nicht @masteink, da count(L7) nicht null ist, sondern die ganze Abfrage.

    Ich frage mich erstmal, was willst du eigentlich genau abfragen, mir scheint dein Count Konstrukt etwas merkwürdig. Es könnten ja theoretisch auch mehrere Werte zurück kommen.
    Ich denke man kann das vll anders machen, wenn man genau wüsste, was du brauchst.
    Das ist meine Signatur und sie wird wunderbar sein!