Seite 1 von 1

Werte summieren bis zum neuen Datum

Verfasst: So, 07.09.2008 09:29
von McWhite
Hallo,

Kann mir jemand helfen? Ich will eine Kalorienberechnung durchführen. Ich möchte in einer neuen Spalte Kalorien aufsummieren bis ein neues Datum kommt. Meine Abfrage sieht bis jetzt so aus:
Bild
Ich kenne mich mit SQL überhaupt nicht aus und bin volkommener Newbie in BASE. Kann ich das überhaupt machen oder muss ich die Daten in Calc berechnen ??

Danke für Eure Hilfe
Gruss Kurt

Re: Werte summieren bis zum neuen Datum

Verfasst: So, 07.09.2008 11:38
von Barlee
Hallo Mc White,

in einer Deiner Tabellen benötigst Du noch eine aufsteigend sortierte Spalte "ID", am besten Auto-increment. Anhand dieser Spalte "ID" und der bereits vorhandenen Datumsspalte kannst Du mittels folgendem SQL eine laufende Summe über das Datum erzeugen:

Code: Alles auswählen

(Select sum(b.kcal_Portion) from [Deine_Tabelle] b where a.ID>=b.ID and a.Datum<=b.Datum) as lfd_Summe
Diese Anweisung fügst Du in die bisherige Abfrage ein. Falls Du Schwierigkeiten dabei haben solltest, dann kopiere am besten das komplette SQL Deiner bisherigen Abfrage (rechter Mausklick auf Abfrage >> "In SQL Ansicht bearbeiten" ) raus und füge es hier einmal ein.

Gruß Barlee

Re: Werte summieren bis zum neuen Datum

Verfasst: So, 07.09.2008 15:14
von McWhite
Hallo Barlee,

Danke für die prompte Antwort. Hier was ich rauskopiert habe:

SELECT "Haupttabelle"."Datum", "Essen"."Essen", "Artikel"."Artikel", "Artikel"."kcal/100g", "Haupttabelle"."Gewicht in g", "Haupttabelle"."Gewicht des Probanden", "kcal/100g" * "Gewicht in g" / 100 AS "kcal/Portion" FROM "Haupttabelle", "Essen", "Artikel" WHERE "Haupttabelle"."EssenID" = "Essen"."ID" AND "Haupttabelle"."ArtikelID" = "Artikel"."ID" ORDER BY "Haupttabelle"."Datum" ASC, "Essen"."Essen" ASC

Gruss Kurt

Re: Werte summieren bis zum neuen Datum

Verfasst: So, 07.09.2008 15:21
von McWhite
Bild

Re: Werte summieren bis zum neuen Datum

Verfasst: So, 07.09.2008 16:00
von Barlee
Hallo McWhite,

ich habe mal schnell ein äußeres SELECT um die bestehende Abfrage gemacht. Probiere einmal, ob folgendes funktioniert (bisher ungetestet).
Die Orientierung erfolgt an der ID der Haupttabelle

Code: Alles auswählen

SELECT 
"a".*,
(SELECT SUM("b"."kcal/Portion") FROM "a" "b" WHERE "a"."ID">="b"."ID" and "a"."Datum"<="b"."Datum") AS "lfd_Summe_kcal_Portion",
(SELECT SUM("b"."kcal/100g") FROM "a" "b" WHERE "a"."ID">="b"."ID" and "a"."Datum"<="b"."Datum") AS "lfd_Summe_kcal_100g"

FROM
(
SELECT 
"Haupttabelle"."ID", 
"Haupttabelle"."Datum", 
"Essen"."Essen", 
"Artikel"."Artikel", 
"Artikel"."kcal/100g", 
"Haupttabelle"."Gewicht in g", 
"Haupttabelle"."Gewicht des Probanden", 
"kcal/100g" * "Gewicht in g" / 100 AS "kcal/Portion" 
FROM 
"Haupttabelle", "Essen", "Artikel" 
WHERE "Haupttabelle"."EssenID" = "Essen"."ID" 
AND "Haupttabelle"."ArtikelID" = "Artikel"."ID" 
ORDER BY "Haupttabelle"."ID" ASC, "Haupttabelle"."Datum" ASC, "Essen"."Essen" ASC
) "a"
Gruß Barlee

Re: Werte summieren bis zum neuen Datum

Verfasst: Mo, 08.09.2008 18:10
von McWhite
Hallo Barlee,

Besten Dank für Deine Unterstützung. Hat aber leider nicht funktioniet.

Bild

Gruss Kurt

Re: Werte summieren bis zum neuen Datum

Verfasst: Mo, 08.09.2008 19:49
von Barlee
Hallo Kurt,

der Fehler wird im Detail liegen...
Wenn Du möchtest, dann hänge die Datenbank mit ein paar Beispieldaten mal hier an.
(Endung .odb in .zip umbenennen und hochladen)

Gruß Barlee

Re: Werte summieren bis zum neuen Datum

Verfasst: Mo, 08.09.2008 22:49
von McWhite
Hallo Barlee

Hier die DB. Danke für die Hilfe.

Gruss Kurt

Re: Werte summieren bis zum neuen Datum

Verfasst: Di, 09.09.2008 21:46
von Barlee
Hallo Kurt,

der Fehler lag darin, dass die HSQLDB offensichtlich Probleme mit ORDER BY in einem Inline View hat.
Daher musste ich Deine Datei wie folgt erweitern:

Abfrage "Abf_Essen" aus Deinem Ursprungs-SQL erstellt. Diese ist Grundlage für einen View namens "Tab_Essen_V" (findest Du unter Tabellen)

Abfrage "Abf_Kalorien_Summe" erstellt - diese fragt den View ab und fügt eine laufende Summe ein. Kannst Du bei Bedarf noch entsprechend anpassen.

Viel Spaß beim Kalorien zählen!

Gruß Barlee

Re: Werte summieren bis zum neuen Datum

Verfasst: Mi, 10.09.2008 12:22
von McWhite
Hallo Barlee

Super funktioniert sehr gut.
Das mit dem View hab ich nicht ganz gecheckt. Kann eine Abfrage als Tabelle gespeichert werden ? Warum nimmt man als Basis nicht gleich die Abfrage ?
Gibt es in diesem Forum keine Beispieldatenbanken wie zum Beispiel Video-DB oder Adressen DB usw. ?

Danke und Gruss Kurt

Re: Werte summieren bis zum neuen Datum

Verfasst: Mi, 10.09.2008 20:18
von Barlee
Hallo McWhite,
Kann eine Abfrage als Tabelle gespeichert werden ?
Man kann aus einer Abfrage einen View erstellen. Vgl. die Beiträge zum Thema von Neuling77 "Makro für..." hier im Forum
Warum nimmt man als Basis nicht gleich die Abfrage ?
Kann man generell machen. Nur in Deinem Beispiel gab es -wie ich schon schrieb- Probleme mit der ORDER BY Klausel im InlineView. HSQLDB hat ORDER BY in der Unterabfrage (die jetzt Basis des Views ist) nicht akzeptiert.Vielleicht ändert sich das in einem der nächsten Releases. Ich nahm bisher an, dass dieses problemlos möglich sei.

Bzgl. Beispieldatenbanken wurde hier schon öfter angefragt. Durchforste am besten mal das Forum.

Gruß Barlee