AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL- Summe je Zeile bilden - kummuliert
Thema durchsuchen
Ansicht
Themen-Optionen

SQL- Summe je Zeile bilden - kummuliert

Ein Thema von MarcRB75 · begonnen am 22. Jun 2019 · letzter Beitrag vom 25. Jun 2019
Antwort Antwort
Seite 1 von 2  1 2      
MarcRB75

Registriert seit: 31. Mai 2018
Ort: Hof/Saale
51 Beiträge
 
Delphi XE2 Starter
 
#1

AW: SQL- Summe je Zeile bilden - kummuliert

  Alt 22. Jun 2019, 22:06
Hallo und Danke für Deine Antwort,

nun, die Datenbank ist so ähnlich wie das frühere Paradox, aber halt einfach besser und viel einfacher, was die
Anlage von Datenbanken ect betrifft. Ich war immer sehr zufrieden damit.

Der Link zur Seite:

http://www.componentace.com/bde_repl...e_database.htm

Nun zu Deiner Frage:
Eindeutig ist die ID, die je Zeile ja eindeutig erzeugt und auch fortlaufend ist.

zu der : "Kriterium, das die "Vorigkeit" definiert" ... mhhh...
kann man die "Werte" je Zeile nicht irgendwie durch eine Variable oder extra Spalte definieren?

Du meintest, mit dem Ersten Teil gibt es keine Probleme.
- Wie könnte ich das realisieren?
und geht das mit einer "laufenden" Variable nicht?

Es sind zwar "nur" 365 Zeilen, aber angenommen, in der 10 Zeile ändert man den Wert, müssen alle anderen 355 Zeilen angepasst und
durchgerechnet, und der Wert je Tag ja angepasst werden. Es wird halt vorher schon viel berechnet und da wollte ich das Ganze ggf.
nicht noch länger hinausziehen, bis der Wert oder besser gesagt die Werte alle angepasst sind.
Marc

Geändert von MarcRB75 (22. Jun 2019 um 22:25 Uhr)
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#2

AW: SQL- Summe je Zeile bilden - kummuliert

  Alt 22. Jun 2019, 22:16
Nur so am Rande bemerkt:
nun, die Datenbank ist so ähnlich wie das frühere Paradox, aber halt einfach besser und viel einfacher, was die
Anlage von Datenbanken ect betrifft. Ich war immer sehr zufrieden damit.

Der Link zur Seite:

http://www.componentace.com/bde_repl...e_database.htm
Wenn du gleich geschrieben hättest Absolute Database, dann hätte es dazu keine Nachfrage gegeben, denn so haben die diese Datenbank benannt und unter dem Namen ist diese auch bekannt.
  Mit Zitat antworten Zitat
MarcRB75

Registriert seit: 31. Mai 2018
Ort: Hof/Saale
51 Beiträge
 
Delphi XE2 Starter
 
#3

AW: SQL- Summe je Zeile bilden - kummuliert

  Alt 22. Jun 2019, 22:27
Ich konnte es jetzt auch nicht direkt ausbessern. Habe es aber oben vermerkt.
Hatte das geschrieben, weil es eben von dieser Firma ist.
Marc
  Mit Zitat antworten Zitat
Rainbow6

Registriert seit: 21. Mai 2019
20 Beiträge
 
#4

AW: SQL- Summe je Zeile bilden - kummuliert

  Alt 22. Jun 2019, 22:40
Also ohne jetzt das Problem und die DBE genauer zu kennen, könnt ich mir irgendwas in dieser Art vorstellen:
Code:
SELECT
   t1.id,
   t1.col1,
   t1.col2,
   t1.col3,
   (SELECT SUM(t2.col4) WHERE t2.id <= t1.id FROM table AS t2) AS xyz
FROM table AS t1
Sowas sollte in etwa den gewünschten Erfolg haben, glaube ich. Müsste das mal
Schnell mit irgendeiner Beispieltabelle durchlaufen lassen.

Gruß
Daniel
  Mit Zitat antworten Zitat
MarcRB75

Registriert seit: 31. Mai 2018
Ort: Hof/Saale
51 Beiträge
 
Delphi XE2 Starter
 
#5

AW: SQL- Summe je Zeile bilden - kummuliert

  Alt 22. Jun 2019, 22:41
Vielen Dank, ich versuche es gleich mal.
Marc
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: SQL- Summe je Zeile bilden - kummuliert

  Alt 22. Jun 2019, 22:49
Da wir den konkreten Aufbau der DB und die Abfrage nicht kennen müßen wir im unge0fähren bleiben.

Zunächst ist die ID nur der Identifier eines Datensatzes und hat nichts mit den anderen Datensätzen zu tun.

Nehmen wir an Du hast folgende Abfrage:
Select wert1,wert2,wert3 from myDB dann erhältst Du die erste Summe mit
Select wert1,wert2,wert3,(wert1+wert2+wert3) as summe1 from myDB Was den "vorherigen" Datensatz angeht, den gibt es nicht solange Du die Ergebnisdatensätze nicht sortierst. Erst dann liegt eine verlässliche Reihenfolge vor, vorausgesetzt das Sortierkriterium ist für jeden Datensatz eindeutig.
In Deinem Beispiel sieht es so aus, als gäbe es Datensätze in denen nicht alle Felder einen Wert ethalten, diesen müßte zuerst z.B. mit Coalesce ein Wert zugewiesen werden.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
MarcRB75

Registriert seit: 31. Mai 2018
Ort: Hof/Saale
51 Beiträge
 
Delphi XE2 Starter
 
#7

AW: SQL- Summe je Zeile bilden - kummuliert

  Alt 23. Jun 2019, 00:28
Danke für Deine Antwort. Ich habe es versucht und hat auch geklappt. Nur zeigt er mir leider den Wert an und schreibt
ihn nicht in die DB hinein. Ich vermute, ich muss das irgendwie anders lösen.
Dankeschön trotzdem.
Marc
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#8

AW: SQL- Summe je Zeile bilden - kummuliert

  Alt 23. Jun 2019, 09:12
Ein "Select" selektiert Daten,
ein "Insert" fügt Daten ein.

Kombiniert man ein "Insert" und ein "Select", so fügt man selektierte Daten ein, jenachdem eine bis viele Zeilen.

Dann gibt es noch das "Update", damit werden einzelne Spalten in bestehenden Datensätzen aktualisiert.

Dazu solltest Du Dir vielleicht mal irgendwo ein kleines Grundlagentutorial anschauen.

Und zuletzt:
Normalerweise trägt man keine Daten in eine Tabelle ein, die man genauso auch per purem Selektstatement berechnen kann.
Du hast selbst weiter oben von "Änderungen ab dem 10. Datensatz mit dem daraus folgenden Neuberechnungsaufwand" geschrieben.

Man selektiert also nur dynamisch und berechnet die benötigten Daten ad hoc. So stimmen sie immer zum Zeitpunkt der Anzeige.

Es gibt natürlich auch immer wieder Gründe, es anders zu machen. Es kommt halt drauf an...
Gruß, Jo
  Mit Zitat antworten Zitat
MarcRB75

Registriert seit: 31. Mai 2018
Ort: Hof/Saale
51 Beiträge
 
Delphi XE2 Starter
 
#9

AW: SQL- Summe je Zeile bilden - kummuliert

  Alt 23. Jun 2019, 10:05
Danke jobo für Deine Nachricht,

ich habe, wenn ich ehrlich bin, vor Jahren mal mit SQL beschäftigt. Und das selektieren von Tabellen haben auch
immer gut geklappt.

Mit Sicherheit macht man das meist so, dass man zur Laufzeit diese Summen je Zeile erzeugt, so dass man immer die
aktuellen Zahlen hat.
Aber ich wollte halt (oder halt versuchen) diese Werte fest in der Tabelle zu integrieren, so dass diese immer zur Verfügung stehen und ich diese ggf. bei weiteren Berechnungen verwenden kann.
Denn ich muss ja sonst immer mir zur Laufzeit erst die Summen bilden um diese weiterverwenden zu können. Das wollte ich halt nicht.

Das mit dem Insert und dem "merken" des vorherigen Datensatzes und diese Summe den neuen DS direkt in die Datenbank hinzufügen/hineinschreiben weiß ich leider nicht und habe schon viel versucht und getestet.

Was ich habe, sind Tageswerte. Und wenn sich diese Tageswerte ändern, soll alles geändert und die nachfolgenden DS angepasst werden. (Vergleichbar mit einem Kassenbuch).

Ich habe das mit der klassischen "Methode" versucht, die Tabelle durchläuft alle Zeilen, aber das dauert einfach zu lange, weil man während der Laufzeit neue Eingaben macht oder machen kann.
Bis man also ggf. eine neue Eingabe machen kann durchläuft er diese Anpassung.
Deshalb kam ich eben darauf, dass man diese Dauer durch ein Select/Insert "beschleunigen" könnte.
Marc
  Mit Zitat antworten Zitat
Rainbow6

Registriert seit: 21. Mai 2019
20 Beiträge
 
#10

AW: SQL- Summe je Zeile bilden - kummuliert

  Alt 23. Jun 2019, 11:18
Danke für Deine Antwort. Ich habe es versucht und hat auch geklappt. Nur zeigt er mir leider den Wert an und schreibt ihn nicht in die DB hinein.
Aber wenn du ihn rein schreibst, musst du das bei jedem update der daten wieder laufen lassen - das ist dir klar?
Code:
UPDATE table AS t1
  SET t1.col4 = (SELECT ... s.o.)
Aber du kannst dir dafür auch einen View bauen, der ist dann bei jeder Abfrage des Views immer aktuell.

Oder du setzt den UPDATE in einen DB-Trigger - aber ich würde Trigger immer so weit wie möglich vermeiden.

Letzte Möglichkeit ist ein „berechnetes Feld“ in der Tabelle und als Feld-Funktion eben den SELECT in der Klammer - Aber ... das unterstützen nicht alle DBEs - MS-SQL kann das glaub ich, andere aber nicht, die unterstützen da nur relativ einfache skalare Ausdrücke.

Grüße
Daniel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz