Einzelnen Beitrag anzeigen

cugar

Registriert seit: 6. Jan 2007
149 Beiträge
 
Delphi XE Professional
 
#6

AW: Tabelle richtig gruppieren.... nur wie?

  Alt 11. Sep 2010, 19:18
Hi,
SQL-Code:
SELECT SNH_ID, SUM(SNH_GELD) AS GeldTotal, SUM(SNH_AUSGEZAHLT) AS ProvisionTotal, (SELECT SUM(SNV_MENGE)
        FROM SNACKVERKAUF
        WHERE SNV_ID = SNACK_HAUPT.SNH_ID) AS DosenTotal
FROM SNACK_HAUPT
GROUP BY SNH_ID
Sieht gut aus, das Problem ist aber von der Tabelle SnackVerkauf nimmt er nur den ersten Datensatz.
Hab mit folgenden Werten gefüllt:

Inhalt:
SNH_ID=1 SNH_GELD=9 SNH_AUSGEZAHLT=0,9


Tabelle "SNACKVERKAUF "
Inhalt:
SNV_ID=1 SNACKHAUPT_ID=1 SNV_MENGE=2
SNV_ID=2 SNACKHAUPT_ID=1 SNV_MENGE=3
SNV_ID=3 SNACKHAUPT_ID=1 SNV_MENGE=4

Müsste sein: Geld=9 ausgezahlt=0,9 Menge=9
Ist aber: Geld=9 ausgezahlt=0,9 Menge=2

Er scheint die Funktion "Sum" im 2 select nicht zu beachten^^


Habs:
Kleiner Fehler hat sich da eingeschliechen, die Anweisung müsste lauten:

SQL-Code:
SELECT SNH_ID, SUM(SNH_GELD) AS GeldTotal, SUM(SNH_AUSGEZAHLT) AS ProvisionTotal, (SELECT SUM(SNV_MENGE)
        FROM SNACKVERKAUF
        WHERE SNV_SNACKHAUPT_ID = SNACK_HAUPT.SNH_ID) AS DosenTotal
FROM SNACK_HAUPT
GROUP BY SNH_ID
Zeile:
Richtig: WHERE SNV_SNACKHAUPT_ID = SNACK_HAUPT.SNH_ID) AS DosenTotal Falsch: WHERE SNV_ID=SNACK_HAUPT.SNH_ID) AS DosenTotal Supppper alles richtig!

Wozu es gut ist?
Die Tabelle Snackhaupt zeigt mir alle Snacklieferungen die statt gefunden haben.
Diese Anweisung hier oben zeigt mir nur in meiner DBXGrid, unten, die Summen der Werte die ich wissen möchte. Es gibt also für die Grid 2 Sql_Anweisungen gleichzeitig, die ausgeführt werden.

Danke für die Hilfe!!!!
Eine unschöne Lösung (unnötiger Speicherplatzverlust) wäre, eine Spalte in Snackhaupt zu erstellen und da die Gesamtmenge noch ein Mal extra für diese Berechnung zu speichern. Jetzt konnte ich als blutiger Anfänger wieder was lernen.

Schönen Abend noch

Geändert von mkinzler (11. Sep 2010 um 20:12 Uhr) Grund: SQL-Tags eingefügt
  Mit Zitat antworten Zitat