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