SQL Script für jeden Benutzer auslesen.

  • VB.NET
  • .NET (FX) 4.0

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Panter.

    SQL Script für jeden Benutzer auslesen.

    Moin :)
    Ich brauche eure Hilfe, ich komme bei einem SQL-Code nicht weiter.
    Ich habe eine Tabelle mit verschiedenen Benutzer angelegt.
    Und jeder Benutzer hat Guthaben erworben.
    Nun möchte ich die Surfkosten und Druckerkosten und die Gutscheine pro Benutzer angezeigt bekommen.
    Leider bekomme ich das nur mit allen Geldwerten hin, aber nicht pro Benutzer.
    Ich hoffe ich könnte das Problem gut beschrieben.
    (Im Anhang ein Bild)
    BIG THX

    SQL-Abfrage

    1. SELECT
    2. Vorname + ' ' + Nachname AS 'Vollständiger Name',
    3. FORMAT(CAST(ISNULL(SUM(proSeiteKosten * SeitenAnzahl),0) as money), 'C') as Druckkosten,
    4. FORMAT(SUM(Guthaben), 'C') AS 'Surfkosten',
    5. FORMAT(SUM(ISNULL(Betrag,0)),'C') AS 'Gutscheine',
    6. SUM(Kosten) + SUM(proSeiteKosten * SeitenAnzahl) + SUM(Betrag) AS 'GewinnProBenutzer',
    7. letzeAufladung
    8. FROM tblBenutzer
    9. LEFT JOIN tblDruckerauftragLogs on tblBenutzer.id = tblDruckerauftragLogs.Wer
    10. LEFT JOIN tblGuthaben ON tblGuthaben.id = tblBenutzer.ID
    11. LEFT JOIN tblCodeLogs ON tblGuthaben.ID = tblCodeLogs.ID
    12. group by vorname, nachname,kosten, Guthaben, letzeAufladung


    Visual Basic.NET 8o
    MS-SQL
    8o
    @an alle
    Hat keiner eine Idee wie das zu lösen ist?
    Oder welchen Suchbegriff ich in Googel verwenden kann?
    ?(

    edit2:
    @an alle
    @INOPIAE
    @xChRoNiKx
    @Panter
    Vielen Dank, für eure Antwort.
    Ich könnte den Fehler nun finden und beheben.

    SQL-Abfrage

    1. SELECT
    2. Vorname + ' ' + Nachname AS 'Vollständiger Name',
    3. FORMAT(CAST(ISNULL(SUM(proSeiteKosten * SeitenAnzahl),0) as money), 'C') as 'Druckkosten',
    4. FORMAT(SUM(ISNULL(Guthaben,0)), 'C') AS 'Surfkosten',
    5. FORMAT(SUM(ISNULL(Betrag,0)),'C') AS 'Gutscheine',
    6. FORMAT(SUM(ISNULL(proSeiteKosten * SeitenAnzahl,0)) +
    7. (SUM(iSNULL(Betrag,0))) + (SUM(ISNULL(Guthaben,0))),'C') AS 'Gewinn',
    8. letzeAufladung
    9. FROM tblBenutzer
    10. LEFT JOIN tblDruckerauftragLogs on tblBenutzer.id = tblDruckerauftragLogs.Wer
    11. LEFT JOIN tblGuthaben ON tblGuthaben.id = tblBenutzer.ID
    12. LEFT JOIN tblCodeLogs ON tblGuthaben.ID = tblCodeLogs.ID
    13. Group by vorname, nachname,kosten, Guthaben, letzeAufladung


    FORMAT(SUM(ISNULL(proSeiteKosten * SeitenAnzahl,0)) +
    (SUM(iSNULL(Betrag,0))) + (SUM(ISNULL(Guthaben,0))),'C') AS 'Gewinn'


    Visual Basic.NET 8o
    MS-SQL
    8o

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Cheffboss“ ()

    Naja ohne die Daten zu sehen ist die Antwort nicht ganz einfach.

    Mal einige Fragen:
    Was kommt denn bei Sum(Kosten) pro Nutzer raus? Ich tippe mal auf NULL
    In welcher Tabelle/n stehen den Kosten, proSeiteKosten, SeitenAnzahl, Guthaben und Betrag?
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Das:
    SUM(Kosten) + SUM(proSeiteKosten * SeitenAnzahl) + SUM(Betrag) AS 'GewinnProBenutzer',

    ist so quatsch weil du ja pro Zeile eine Angabe hast also musst du das Ergebnis nur summieren.

    So:

    SUM( Kosten + (proSeiteKosten * SeitenAnzahl) + Betrag) as GewinnProBenutzer,

    Und natürlich solltest du NULL felder vorher per ISNULL auf 0 setzen damit du nirgends einen NULL wert hast.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    @INOPIAE
    Ich habe hier mal die Tabellen als Bilder hochgeladen.

    edit2:
    Ich habe die Bilder wieder gelöscht, damit das Forum nicht zugemült wird!
    Da das Problem nun behoben worden ist!
    Visual Basic.NET 8o
    MS-SQL
    8o

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Cheffboss“ ()