Werte summieren bis zum neuen Datum

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Werte summieren bis zum neuen Datum

Re: Werte summieren bis zum neuen Datum

von Barlee » Mi, 10.09.2008 20:18

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

Re: Werte summieren bis zum neuen Datum

von McWhite » Mi, 10.09.2008 12:22

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

von Barlee » Di, 09.09.2008 21:46

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
Dateianhänge
Kalorienberechnung_neu.zip
(69.58 KiB) 45-mal heruntergeladen

Re: Werte summieren bis zum neuen Datum

von McWhite » Mo, 08.09.2008 22:49

Hallo Barlee

Hier die DB. Danke für die Hilfe.

Gruss Kurt
Dateianhänge
Kalorienberechnung.zip
(67.03 KiB) 27-mal heruntergeladen

Re: Werte summieren bis zum neuen Datum

von Barlee » Mo, 08.09.2008 19:49

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

von McWhite » Mo, 08.09.2008 18:10

Hallo Barlee,

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

Bild

Gruss Kurt

Re: Werte summieren bis zum neuen Datum

von Barlee » So, 07.09.2008 16:00

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

von McWhite » So, 07.09.2008 15:21

Bild

Re: Werte summieren bis zum neuen Datum

von McWhite » So, 07.09.2008 15:14

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

von Barlee » So, 07.09.2008 11:38

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

Werte summieren bis zum neuen Datum

von McWhite » So, 07.09.2008 09:29

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

Nach oben