von RobertG » Di, 29.04.2014 07:40
Hallo Gast,
eine Summierung in SQL geht nur, wenn die anderen Felder, die in der Abfrage vorhanden sind, einer Gruppierung unterliegen. Das ist bei Deiner 2. Abfrage nicht der Fall. Das müsste auch die (englischsprachige) Fehlermeldung besagen.
Etwas frei übersetzt: Der folgenden Ausdruck enthält keine der Sammelfunktionen oder eine Gruppierung. ...
Du musst also das "rec_datum" und den "rec_betrag" in die Gruppierung mit einbauen.
Code: Alles auswählen
SELECT "tRechnung"."rec_id" AS "rec_id", SUM( "tZahlung"."zah_betrag" ), "tRechnung"."rec_datum", "tRechnung"."rec_betrag" FROM { OJ "tRechnung" LEFT OUTER JOIN "tZahlung" ON "tRechnung"."rec_id" = "tZahlung"."zah_rec_id" } GROUP BY "tRechnung"."rec_id", "tRechnung"."rec_datum", "tRechnung"."rec_betrag"
Alternativ kannst Du solche Summierungen auch mittels korrelierender Unterabfrage lösen:
Code: Alles auswählen
SELECT "a"."rec_id" AS "rec_id", (SELECT SUM( "tZahlung"."zah_betrag" ) FROM "tZahlung" WHERE "a"."rec_id" = "zah_rec_id") AS "zah_betrag", "a"."rec_datum", "a"."rec_betrag" FROM "tRechnung" AS "a" GROUP BY "a"."rec_id"
Details zu korrelierenden Unterabfragen siehe das Base-Handbuch, in der Fassung 4.2 S. 197ff
Gruß
Robert
Hallo Gast,
eine Summierung in SQL geht nur, wenn die anderen Felder, die in der Abfrage vorhanden sind, einer Gruppierung unterliegen. Das ist bei Deiner 2. Abfrage nicht der Fall. Das müsste auch die (englischsprachige) Fehlermeldung besagen.
Etwas frei übersetzt: Der folgenden Ausdruck enthält keine der Sammelfunktionen oder eine Gruppierung. ...
Du musst also das "rec_datum" und den "rec_betrag" in die Gruppierung mit einbauen.
[code]SELECT "tRechnung"."rec_id" AS "rec_id", SUM( "tZahlung"."zah_betrag" ), "tRechnung"."rec_datum", "tRechnung"."rec_betrag" FROM { OJ "tRechnung" LEFT OUTER JOIN "tZahlung" ON "tRechnung"."rec_id" = "tZahlung"."zah_rec_id" } GROUP BY "tRechnung"."rec_id", "tRechnung"."rec_datum", "tRechnung"."rec_betrag"[/code]
Alternativ kannst Du solche Summierungen auch mittels korrelierender Unterabfrage lösen:
[code]SELECT "a"."rec_id" AS "rec_id", (SELECT SUM( "tZahlung"."zah_betrag" ) FROM "tZahlung" WHERE "a"."rec_id" = "zah_rec_id") AS "zah_betrag", "a"."rec_datum", "a"."rec_betrag" FROM "tRechnung" AS "a" GROUP BY "a"."rec_id"[/code]
Details zu korrelierenden Unterabfragen siehe das Base-Handbuch, in der Fassung 4.2 S. 197ff
Gruß
Robert