Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

Hansa 2. Feb 2007 10:35

Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
 
Nun gut, es interesiert also lediglich das Datum und die Uhrzeit und alles andere ist egal ? Das können auch Zufallswerte sein oder was ? :shock: Wie bereits gesagt : SP, die internern ermittelt, ob ein Datensatz mit gleichem Datum/Uhrzeit vorhanden ist und dann UPDATE. Falls nicht vorhanden : INSERT.

wg. roter Kasten : Oh je, ich sage besser nichts mehr. 8) :mrgreen: Deshalb ohne Gewähr : in dem nachgelieferten Beispiel ist die 123 der erste Wert. Um nur den abzuspeichern, entfiele in der SP lediglich der UPDATE-Zweig.

VORHANDEN = -1;
SELECT ID FROM BLABLA WHERE (DATUM = :DATUM AND UHRZEIT = :UHRZEIT) INTO :VORHANDEN;
IF VORHANDEN < 0 THEN
INSERT ...

AirJordan 2. Feb 2007 11:36

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

Zitat von mkinzler
Dann stimmt doch sum() da 8+2 = 10

Dann würde aus vier Datensätzen ein! Datensatz mit der folgenden SQL Anweisung entstehen?!

SQL-Code:
SELECT Datum, Zeit, Sum(BZ), Sum(INSULIN), Sum(BE), INSULUIN_NAME, STATUS FROM DataImport GROUP BY Datum, Zeit;
Dann habe ich danach folgendes in der DataImport:

Zitat:

"01.01.2007","20:00","123","10","2","RAPID","1 0"
Werde das heute Abend noch mal ausprobieren.

AirJordan 2. Feb 2007 11:42

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

Zitat von Hansa
Nun gut, es interesiert also lediglich das Datum und die Uhrzeit und alles andere ist egal ? Das können auch Zufallswerte sein oder was ?

Naja Zufallswerte sind das alles nicht, sie kommen aus einer anderen Software in der die
Werte ebenfalls eingegeben werden können.

Zitat:

Zitat von Hansa
wg. roter Kasten : Oh je, ich sage besser nichts mehr. 8) :mrgreen:

Welcher rote Kasten? :gruebel:

Zitat:

Zitat von Hansa
Deshalb ohne Gewähr : in dem nachgelieferten Beispiel ist die 123 der erste Wert. Um nur den abzuspeichern, entfiele in der SP lediglich der UPDATE-Zweig.

VORHANDEN = -1;
SELECT ID FROM BLABLA WHERE (DATUM = :DATUM AND UHRZEIT = :UHRZEIT) INTO :VORHANDEN;
IF VORHANDEN < 0 THEN
INSERT ...

Werde ich mal austesten.

marabu 2. Feb 2007 11:59

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

bei mir funktioniert das ausgezeichnet:

Delphi-Quellcode:
begin
  with Query do
  begin
    SQL.Text := 'select datum, zeit, max(bz) as bz, sum(ie) as ie, sum(be) as be '
              + 'into tageswerte from messwerte group by datum, zeit';
    ExecSQL;

    SQL.Text := 'select * from tageswerte order by datum, zeit';
    Open;
    // ...
    Close;
  end;
Freundliche Grüße

mkinzler 2. Feb 2007 12:01

Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
 
@Achim du hast aber ursprünglich was anderes geschrieben:
Zitat:

SQL-Code:
SELECT * FROM Tabelle GROUP BY Datum, Zeit, MAX(Wert1), MAX(Wert2), MAX(Wert3) ...


marabu 2. Feb 2007 12:59

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

zu dem Zeitpunkt war die Anforderung ein simples folding - da war es egal, ob man Max(), Min() oder Sum() verwendet. Später hat Holger erklärt, dass er auch noch akkumulieren muss, weshalb ich die für mich erkenntlichen Werte auf Sum() umgestellt habe.

Freundliche Grüße

mkinzler 2. Feb 2007 13:03

Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
 
Nein ich meinte der Unterschied zwischen Feldliste und Gruppierungsliste

marabu 2. Feb 2007 13:10

Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
 
Meinst du die Felder Wert1, Wert2, Wert3? Ich hatte mir inzwischen eine Testdatenbank erzeugt, wobei ich die Felder eigenwillig benannt habe, aber eigentlich wollte ich mit Beitrag #14 nur einen Machbarkeitsbeweis angesichts der Negativmeldung in Beitrag #4 antreten.


Edit: Ach Scheibenkleister - jetzt weiß ich was du meinst. Muss ich blind gewesen sein. So sorry.

AirJordan 2. Feb 2007 16:28

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

Zitat von marabu
Hallo Holger,

bei mir funktioniert das ausgezeichnet:

Delphi-Quellcode:
begin
  with Query do
  begin
    SQL.Text := 'select datum, zeit, max(bz) as bz, sum(ie) as ie, sum(be) as be '
              + 'into tageswerte from messwerte group by datum, zeit';
    ExecSQL;

    SQL.Text := 'select * from tageswerte order by datum, zeit';
    Open;
    // ...
    Close;
  end;
Freundliche Grüße

Hallo Achim,

hmmm :gruebel: irgendwie geht das mit den SQL Befehlen in der Absolute Datebase noch nicht.
Wenn ich mit dem Group Befehl Datum und Zeit einbinde, meckert die Datenbank mit folgenden
Hinweis:

Zitat:

Field is not included in GROUP BY list. Table name = '', Field name = 'INSULIN_NAME', FieldNo = 8, Found field name = 'INSULIN_NAME' - Native error: 10342
Wenn ich dann alle mit SELECT gewählten Felder in die Gruppenliste einfüge, kommt zwar keine Fehlermeldung,
aber das SQL Ergebnis enthält genau die gleiche Anzahl Datensätze wie die ursprüngliche Importtabelle. :?

mkinzler 2. Feb 2007 16:29

Re: Wie mehrere Datensätze m.gleichen Feldwerten zusammenfüh
 
Die Felder müßen entweder in der Gruppierung sein oder als Aggregat (Min, Max, AVG, Sum, ...)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:00 Uhr.
Seite 2 von 3     12 3      

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