AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Datenübergabe an DB?!?
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Datenübergabe an DB?!?

Ein Thema von Hansi · begonnen am 21. Dez 2004 · letzter Beitrag vom 3. Jan 2005
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von CenBells
CenBells

Registriert seit: 30. Mär 2003
Ort: Kiel urspr. Lübeck
176 Beiträge
 
Delphi 7 Professional
 
#11

Re: SQL Datenübergabe an DB?!?

  Alt 21. Dez 2004, 16:40
Hi,

welche DB verwendest Du überhaupt?
Probier es doch mal so:

Delphi-Quellcode:
Update Datenbank
 SET DeineSpalte =
  (SELECT sum(Wert) as Summe FROM Datenbank WHERE Datum BETWEEN :von AND :bis)
 WHERE Datum = :Bis
Gruß
Ken
Ein Objekt ist eine zur Ausführungszeit vorhandene für seine Instanzvariablen Speicherplatz allokierende Instanz, die sich gemäß dem Protokoll ihrer Klasse verhält.
  Mit Zitat antworten Zitat
Hansi

Registriert seit: 8. Okt 2004
271 Beiträge
 
#12

Re: SQL Datenübergabe an DB?!?

  Alt 22. Dez 2004, 08:53
Vielen Dank für eure Tips!

habe es aber noch nicht hinbekommen.

Nachdem ich mit SQL sum(Wert) AS Summe ermittelt habe möchte ich die Variable Summe in eine leere vorhandene Spalte in die Datenbank speichern aus der ich die Summe gebildet habe.

Könnt Ihr mir dazu ein Beispiel geben?

Danke im Voraus!
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#13

Re: SQL Datenübergabe an DB?!?

  Alt 22. Dez 2004, 08:58
Zitat von Hansi:
Nachdem ich mit SQL sum(Wert) AS Summe ermittelt habe möchte ich die Variable Summe in eine leere vorhandene Spalte in die Datenbank speichern aus der ich die Summe gebildet habe.
Also zum Verständnis: Du speicherst deine Werte nicht in eine Spalte einer Datenbank sondern in der Spalte einer Tabelle.

Dann ist es wichtig zu wissen, welche Tabelle das ist. Eine separate, oder die gleiche wo du die Summer errechnest.

Ein Grundsatz solltest du dir merken: vermeide wann immer es geht, redundante Daten. Warum die Summe also speichern wenn du sie immer wieder errechnen lassen kannst. Ändert sich irgendwann im Nachhinein was an deinen Rohdaten, stellt der Wert "Summe" in deiner Tabelle einen falschen Wert dar.
  Mit Zitat antworten Zitat
Hansi

Registriert seit: 8. Okt 2004
271 Beiträge
 
#14

Re: SQL Datenübergabe an DB?!?

  Alt 22. Dez 2004, 09:03
Danke!

1. Habe mich verschrieben, natürlich Tabelle!
2. Ist die gleiche Tabelle aus der auch die Summe gebildet wird.
3. Es wird zu keinen redundanten daten kommen, da sich die Rohdaten in der Vergangenheit nicht mehr ändern werden. Grund ist: Aus Performancegründen möchte ich die Summen in die Datenbank schreiben, da ich diese Summe noch sehr oft brauchen werde(für andere Berechnungen) Ist das Vorgehen so i.O.?

Wie schreibe ich die Summe an eine bestimmte Position(z.B. wo das DAtum ... ist)?
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#15

Re: SQL Datenübergabe an DB?!?

  Alt 22. Dez 2004, 09:16
Zitat von Hansi:
2. Ist die gleiche Tabelle aus der auch die Summe gebildet wird.
Also wie soll ich denn das jetzt verstehen. Du bildest doch die Summe einer Spalte über mehrere Zeilen hinweg. In welche Zeile willst du denn diese Summe jetzt schreiben. Bsp:
Code:
Wert  Datum    Summe
1      1.1.2004  NULL
10     2.1.2004  NULL
100    3.1.2004  NULL
Also nimm mal an die Tabelle sieht wie folgt aus.

Jetzt berechnest du die Summe, die du am Anfang des Threads angegeben hast, z.B. mit der Bedingung Datum between 1.1.2004 and 2.1.2004.
-> Summe = 11

In welche Datensätze willst du denn jetzt Summe schreiben? Etwa so:
Code:
Wert  Datum    Summe
1      1.1.2004  11
10     2.1.2004  11
100    3.1.2004  NULL
Das ist völliger Quatsch, da der 11 in keiner Verbindung mit deinen Datensätzen steht. Was, wenn du übermorgen die Summe wie folgt berechnet wird, Summe=sum(Wert) where Datum between 2.1.2004 and 3.1.2004 -> Summe=110... Dann käme folgendes bei raus:
Code:
Wert  Datum    Summe
1      1.1.2004  11
10     2.1.2004  110
100    3.1.2004  110
Das ist definitv nicht konsistent.
  Mit Zitat antworten Zitat
Hansi

Registriert seit: 8. Okt 2004
271 Beiträge
 
#16

Re: SQL Datenübergabe an DB?!?

  Alt 22. Dez 2004, 09:22
Ich berechne immer die Summe bzw eigentlich genauer den Mittelwert(zur Einfachheit hier nur summe) und zwar so:
Summe am 31.12. über die letzten 30 Tage also 1.12. bis 31.12.
Summe am 1.1. über die letzten 30 Tage also 2.12. bis 1.1.
...

Ich hoffe es ist jetzt klar geworden. Später im Programm möchte ich auf die Summen zugreifen.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#17

Re: SQL Datenübergabe an DB?!?

  Alt 22. Dez 2004, 09:27
Zitat von Hansi:
Ich hoffe es ist jetzt klar geworden. Später im Programm möchte ich auf die Summen zugreifen.
Nein, ist es immer noch nicht. In welchen Zeilen wird denn die Summe gespeichert. Es sind ja mehrere Datensätze betroffen. Ich zweifle grad an deiner Datenbankstruktur, die in meinen Augen keinen Sinn macht.
  Mit Zitat antworten Zitat
Hansi

Registriert seit: 8. Okt 2004
271 Beiträge
 
#18

Re: SQL Datenübergabe an DB?!?

  Alt 22. Dez 2004, 10:00
So nun versuche ich es nochmal möglichst deutlich zu schreiben. Meiner Meinung macht mein Datenbankstruktur durchaus Sinn.
In die Tabelle mit den Spalten "Name, datum, Wert und Summe" werden die Daten eingelesen. Dann sieht das so aus.


Delphi-Quellcode:
Name   Datum      Wert   Summe
Hans   01.12.2004   100
Hans   02.12.2004   105
Hans   03.12.2004   100
Hans   04.12.2004   102
Hans   05.12.2004   90
Gustav   01.12.2004   40
Gustav   02.12.2004   42
Gustav   03.12.2004   45
Gustav   04.12.2004   50
Gustav   05.12.2004   48
Nun soll der Durchschnitt berechnet werden, und, und, und...

Kannst Du mir bei meinem Problem helfen?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#19

Re: SQL Datenübergabe an DB?!?

  Alt 22. Dez 2004, 12:19
Ich kann Jelly nur zustimmen. Das ganze Vorhaben kommt mir auch recht seltsam vor. Du darfst auf keinen Fall die Programmlogik zugunsten der Performance reduzieren. Ich glaube aber zu wissen, was du willst. Bei mir sieht es so aus, daß ich einen Rechnungsendbetrag an vielen Stellen brauche. Nun besteht aber jede Rechnung aus vielen Positionen. Natürlich könnte ich den Endbetrag immer wieder aus den Positionen errechnen lassen.

Aber irgendwo hörts dann aber doch auf. 8) Ich speichere das ganze lieber in einer zweiten Tabelle "Rechnungskopf". Also eine 1:n Beziehung, wo jede Rechnung eben n Positionen hat. Jelly hat in der Theorie schon recht. Angenommen ich muß eine Rechnungsposition nachträglich löschen, weil sich rausstellt, daß die Ware doch nicht da ist. In diesen Fällen genügt es dann nicht mehr, nur die Position zu löschen. Ich muß auch ein Update für die Endsumme machen. Aber das weiß ich ja vorher und muß es eben auch machen. Die Konsistenz der Datenbank ist bei so was auch nicht in Gefahr, sofern man seine Transaktionen sinnvoll plant.

Was Du vor hast, das ist allerdings so, als würde ich versuchen die Endsumme in der Rechnungs-Positionen Table unterzubringen. In welchem Feld denn ? Soll ich das Einzelpreis_oder_Summe_oder_Durchschnitt_Feld nennen ? Und später selber nicht mehr wissen, um was es sich jetzt überhaupt handelt ? 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
Hansi

Registriert seit: 8. Okt 2004
271 Beiträge
 
#20

Re: SQL Datenübergabe an DB?!?

  Alt 22. Dez 2004, 12:25
Vielen Dank für Deine Antwort. Werde mir überlegen ob meine Struktur wirklich die richitge für mich ist.


Trotzdem ist der Hauptpunkt dieses Beitrags für mich immer noch offen wie bekomme ich das Ergebnis der SQL-Abfrage in die Tabelle an einer bestimmten Position?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 00:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz