AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Wie mehrere Datensätze m.gleichen Feldwerten zusammenführen?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Offene Frage von "AirJordan"
Ein Thema von AirJordan · begonnen am 31. Jan 2007 · letzter Beitrag vom 2. Feb 2007
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#1

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

  Alt 31. Jan 2007, 11:06
Datenbank: Absolute Datebase • Version: 4.89 • Zugriff über: Absolute Database/Dataset
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.
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

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

  Alt 31. Jan 2007, 11:26
Hallo Holger,

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

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#3

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

  Alt 31. Jan 2007, 15:48
Hallo Achim,

vielen Dank für die Infos , werde das heute Abend mal ausprobieren.
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#4

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

  Alt 2. Feb 2007, 09:09
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.
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

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

  Alt 2. Feb 2007, 09:17
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?
SELECT datum, zeit, Sum(Wert1), ..., Sum(Wertx) FROM Tabelle GROUP BY Datum, Zeit;
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

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

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

  Alt 2. Feb 2007, 09:47
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 :

SET FELDX = FELDX + :PARAM;
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#7

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

  Alt 2. Feb 2007, 09:59
Sorry, ich klare die Glaskugel mal etwas auf.

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.
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

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

  Alt 2. Feb 2007, 10:18
Zitat:
ich möchte nur
aus zwei oder drei Datensätzen einen! Datensatz machen.
Mit welchem Wert dann?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#9

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

  Alt 2. Feb 2007, 10:28
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...
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

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

  Alt 2. Feb 2007, 10:31
Dann stimmt doch sum() da 8+2 = 10
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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:07 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