Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Wie mehrere Datensätze m.gleichen Feldwerten zusammenführen? (https://www.delphipraxis.net/85473-wie-mehrere-datensaetze-m-gleichen-feldwerten-zusammenfuehren.html)

AirJordan 31. Jan 2007 11:06

Datenbank: Absolute Datebase • Version: 4.89 • Zugriff über: Absolute Database/Dataset

Wie mehrere Datensätze m.gleichen Feldwerten zusammenführen?
 
Hallo,

ich habe mal eine Frage. Gegeben sei eine temporäre Importdatenbanktabelle. Diese soll mit einer CSV Datei, die von einem anderen Programm erstellt wird, gefüllt werden und später in einem Datengitter angezeigt werden.

Diese CSV Datei sieht wie folgt aus:

Zitat:

[..]
"01.01.2007","13:20","100","",""
"01.01.2007","13:20","","5",""
"01.01.2007","15:00","90","",""
"01.01.2007","16:30","","","6"
"01.01.2007","20:00","123","",""
"01.01.2007","20:00","","8",""
"01.01.2007","20:00","","","1"
[..]
usw
Jetzt werden die einzelnen Zeilen der CSV Datei als je ein Datensatz in die temp. Importtabelle geschrieben. Ich möchte aber die Daten, die z.b. alle um 20:00 an einem Tag waren, als ein! Datensatz geschrieben haben.

Wie löst man dies am sinnvollsten??

Ich habe bis jetzt eine

Delphi-Quellcode:
dataset.first
while not dataset.eof do
begin
  lese_ein;
  dataset.next;
end;
Man könnte nach "lese_ein" einfach einen Datensatz weiter schauen und dort überprüfen, ob das gleiche Datum und die gleiche Uhrzeit vorhanden ist und dann die Daten zusammenführen. Leider sind es mal zwei und mal drei gleiche Datensätze. Vier und mehr ist zwar ganz selten, kann aber auch theoretisch vorkommen.

Kann man das vielleicht über SQL Befehle lösen? Oder gibt es da noch andere Lösungswege?

Schon mal danke für eure Tipps und Hinweise.

marabu 31. Jan 2007 11:26

Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
 
Hallo Holger,

probiere es mal mit SELECT * FROM Tabelle GROUP BY Datum, Zeit, MAX(Wert1), MAX(Wert2), MAX(Wert3) ...

Freundliche Grüße

AirJordan 31. Jan 2007 15:48

Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
 
Hallo Achim,

vielen Dank für die Infos :thumb: , werde das heute Abend mal ausprobieren.

AirJordan 2. Feb 2007 09:09

Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
 
Hallo noch mal,

mit der SQL Abfrage hat das nicht geklappt, weil die Absolute Database vielleicht den SQL MAX Befehl u.U so nicht unterstützt und weil die Daten in den einzelnen Spalten bei gleicher Uhrzeit und Datum auch mal mehrfach vorkommen können (siehe Beispiel).

Das hatte ich vorher aber in der CSV Datei nicht entdecken können.

Zitat:

[..]
"01.01.2007","20:00","123","",""
"01.01.2007","20:00","","8",""
"01.01.2007","20:00","","2",""
[..]
Ich versuche nun doch mit einem Next und einem Vergleich auf Datum und Uhrzeit die "doppelten"
rauszufiltern. :gruebel:

mkinzler 2. Feb 2007 09:17

Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
 
Zitat:

Ich möchte aber die Daten, die z.b. alle um 20:00 an einem Tag waren, als ein! Datensatz geschrieben haben.
Als Maximum, Durchschnitt, Summe?
SQL-Code:
SELECT datum, zeit, Sum(Wert1), ..., Sum(Wertx) FROM Tabelle GROUP BY Datum, Zeit;

Hansa 2. Feb 2007 09:47

Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
 
Lege zuerst mal eine Stored Procedure in der DB an. Meine Glaskugel meint, mit "zusammenführen" sei eine Addition gemeint, eventuell auch ein Überschreiben. So lange das nicht gesagt wurde, macht eine genaue Antwort keinen Sinn. Deshalb bur kurz skizziert :

1. Daten einlesen
2. Übergabe an Parameter der SP

innerhalb der SP :

anhand der Input Parameter Datum und Uhrzeit mit einem SELECT suchen, ob was gleiches da ist.
Falls nicht : INSERT. Anderennfalls UPDATE und für eine Addition wäre dann noch so eine Zeile nötig :

SQL-Code:
SET FELDX = FELDX + :PARAM;

AirJordan 2. Feb 2007 09:59

Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
 
Sorry, ich klare die Glaskugel mal etwas auf. :oops:

Es ist nicht sinnvoll die Daten mit gleichem Datum und gleicher Uhrzeit in z.B. zwei,
drei oder mehr Datensätzen abzuspeichern. Das verwirrt den Anwender. Ich möchte also
nicht eine Summe, einen Durchschnitt oder ähnliches der Spalten bilden, ich möchte nur
aus zwei oder drei Datensätzen einen! Datensatz machen. (wenn Datum und Uhrzeit exakt
gleich). :???:

Hoffe ich habe jetzt die Situation besser beschrieben.

mkinzler 2. Feb 2007 10:18

Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
 
Zitat:

ich möchte nur
aus zwei oder drei Datensätzen einen! Datensatz machen.
Mit welchem Wert dann?

AirJordan 2. Feb 2007 10:28

Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
 
Aus diesem Beispiel würde dann...

Zitat:

"01.01.2007","20:00","123","",""
"01.01.2007","20:00","","8",""
"01.01.2007","20:00","","2",""
"10.01.2007","20:00","","","2"
Zitat:

"01.01.2007","20:00","123","10","2"
...entstehen.

Grund: die 123 ist ein Blutzuckerwert, die 8 und die 2 sind Insulinmengen und die 2
sind gegessene Broteinheiten (BE). Die 8 und die 2 sind deshalb zwei Einträge, weil
man zum Beispiel 8 Einheiten für die 2 BE und noch mal 2 Einheiten Insulin als
Korrektur für die "zu hohen" 123 spritzen muss. In meiner Software werden die aber
als 10 geführt.

Diabetiker unter uns verzeihen mir bitte die etwas unrealistischen Werte... :zwinker:

mkinzler 2. Feb 2007 10:31

Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
 
Dann stimmt doch sum() da 8+2 = 10


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 Uhr.
Seite 1 von 3  1 23      

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