Group by [ERLEDIGT]
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Re: Group by [ERLEDIGT]
und einer Tiefgarage unter dem Keller.
Wobei ich jetzt aber schon sagen muß, ich hatte am WE einen SQL Befehl erstellt, der klappte und mir (von mehreren Tankvorgängen am gleichen Tag abgesehen) das Ergebnis lieferte, was ich brauchte. Leider dauert das aber viel zu lange. Also wurde das ganze Konzept geändert. Es wird jetzt in der Fahrzeugtabelle der jeweils letzte Tankvorgang zum Fahrzeug gemerkt (Datum, Menge) und den frage ich dann ab. Mit anderen Worten das Grundproblem ist schon gelöst. Wenn weitere Forschungen auf dem Gebiet aber neue Erkenntnisse und Lerneffekte in Sachen SQl bringen, dann können wir das gerne weiter verfolgen hier.
Wie sol ich das denn machen? In der DBF dürfte nichts gefährliches stehen. Ich könnte also den Architekten veranlassen ein Script zu erstellen, das einpacken und hier posten. Dann dürfte es kein Problem sein es nachzubilden auf einem anderen Rechner!?
Wobei ich jetzt aber schon sagen muß, ich hatte am WE einen SQL Befehl erstellt, der klappte und mir (von mehreren Tankvorgängen am gleichen Tag abgesehen) das Ergebnis lieferte, was ich brauchte. Leider dauert das aber viel zu lange. Also wurde das ganze Konzept geändert. Es wird jetzt in der Fahrzeugtabelle der jeweils letzte Tankvorgang zum Fahrzeug gemerkt (Datum, Menge) und den frage ich dann ab. Mit anderen Worten das Grundproblem ist schon gelöst. Wenn weitere Forschungen auf dem Gebiet aber neue Erkenntnisse und Lerneffekte in Sachen SQl bringen, dann können wir das gerne weiter verfolgen hier.
Wie sol ich das denn machen? In der DBF dürfte nichts gefährliches stehen. Ich könnte also den Architekten veranlassen ein Script zu erstellen, das einpacken und hier posten. Dann dürfte es kein Problem sein es nachzubilden auf einem anderen Rechner!?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2832
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 99 Mal
- Danksagung erhalten: 13 Mal
Re: Group by [ERLEDIGT]
Hallo, Manfred -
bei einem php-basierten Projekt hatte ich auch elend lange Laufzeiten - da wurde eine Statistik zu Beginn ausgewertet. Da der Pool, aus dem sich die Statistik bediente, immer grösser geworden war, dauerte die Abfrage immer länger.
Unter MySQL kann man dann mit "analyze SELECT ..." das Statement untersuchen lassen. MySQL zeigt dann an, wie das Statement ausgeführt wird, in meinem Fall "no index", in dem Fall wird sortiert, und das dauert. Also habe ich einen passenden Index erstellt, und jetzt flutscht das Statement nur so durch.
Vermutlich hat PostGRE einen vergleichbaren Befehl, der zeigt Dir dann an, was gemacht wird, und daraus kann man dann (meistens) schliessen, was zu tun ist, um den Turbo einzuschalten.
bei einem php-basierten Projekt hatte ich auch elend lange Laufzeiten - da wurde eine Statistik zu Beginn ausgewertet. Da der Pool, aus dem sich die Statistik bediente, immer grösser geworden war, dauerte die Abfrage immer länger.
Unter MySQL kann man dann mit "analyze SELECT ..." das Statement untersuchen lassen. MySQL zeigt dann an, wie das Statement ausgeführt wird, in meinem Fall "no index", in dem Fall wird sortiert, und das dauert. Also habe ich einen passenden Index erstellt, und jetzt flutscht das Statement nur so durch.
Vermutlich hat PostGRE einen vergleichbaren Befehl, der zeigt Dir dann an, was gemacht wird, und daraus kann man dann (meistens) schliessen, was zu tun ist, um den Turbo einzuschalten.
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Re: Group by [ERLEDIGT]
Hi Georg,
das dürfte hier aber nicht das Problem sein. Der Index auf dem Tankbuch ist kfznr + tankdatum + tankzeit.
das dürfte hier aber nicht das Problem sein. Der Index auf dem Tankbuch ist kfznr + tankdatum + tankzeit.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- nightcrawler
- 1000 working lines a day
- Beiträge: 656
- Registriert: Di, 24. Apr 2012 16:33
- Wohnort: 72184 Weitingen
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 97 Mal
- Kontaktdaten:
Re: Group by [ERLEDIGT]
Hallo Manfred,
das einfachste ist ein SQL Script, welches die Tabellen und Testdaten erzeugt...
Dasselbe für einen kleinen Ausschnitt der Tankdaten usw.
Mache es einfach allen leichter, die Situation nachzustellen.
das einfachste ist ein SQL Script, welches die Tabellen und Testdaten erzeugt...
Code: Alles auswählen
Create table Fahrzeug(id integer, Kennzeichen CHAR(20) ....);
INSERT INTO Fahrzeuge(id, kennzeichen, ...) VALUES
(1, 'AB-CD 196'),
(2, 'EF-GH 77');
Mache es einfach allen leichter, die Situation nachzustellen.
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Re: Group by [ERLEDIGT]
ok,
ich habe mal ein Paket mit der Originalmenge zusammengestellt. Wer das wirklich mal probieren will, der kann sich per PN bei mir melden, ich verschicke dann das ZIP File. Ich denke mal es geht hier in erster Linie nicht um die Umsetzung, sondern darum wie schnell das Ergebnis vorliegt. Und dann wäre es sicherlich interessant, das mit der Menge der Daten direkt zu testen.
ich habe mal ein Paket mit der Originalmenge zusammengestellt. Wer das wirklich mal probieren will, der kann sich per PN bei mir melden, ich verschicke dann das ZIP File. Ich denke mal es geht hier in erster Linie nicht um die Umsetzung, sondern darum wie schnell das Ergebnis vorliegt. Und dann wäre es sicherlich interessant, das mit der Menge der Daten direkt zu testen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- nightcrawler
- 1000 working lines a day
- Beiträge: 656
- Registriert: Di, 24. Apr 2012 16:33
- Wohnort: 72184 Weitingen
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 97 Mal
- Kontaktdaten:
Re: Group by [ERLEDIGT]
Manfred,
mit einer vollumfassenden Datensammlung kannst Du aber nicht schnell diverse Statements ausprobieren, weil Du nie die Zeit hast, alles anzuschauen, ob es auch so passt.
mit einer vollumfassenden Datensammlung kannst Du aber nicht schnell diverse Statements ausprobieren, weil Du nie die Zeit hast, alles anzuschauen, ob es auch so passt.
- Marcus Herz
- 1000 working lines a day
- Beiträge: 863
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 40 Mal
- Danksagung erhalten: 197 Mal
- Kontaktdaten:
Re: Group by [ERLEDIGT]
Das ist auch eine Art Index, welcher wahrscheinlich nicht SQL optimiert ist.das dürfte hier aber nicht das Problem sein. Der Index auf dem Tankbuch ist kfznr + tankdatum + tankzeit.
Probier mal noch einen zweiten dazu:
Code: Alles auswählen
create index kfznrsql on tankbuch (kfznr, tankdatum, tankzeit);
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
- nightcrawler
- 1000 working lines a day
- Beiträge: 656
- Registriert: Di, 24. Apr 2012 16:33
- Wohnort: 72184 Weitingen
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 97 Mal
- Kontaktdaten:
Re: Group by [ERLEDIGT]
Hallo Marcus,
da DBF zum Einsatz kommen, wird ADS wohl den Index aus Deinem SQL so erstellen, wie Manfred bereits vorgegeben;) Den Concatenator ';' gibt es nur bei ADT.
da DBF zum Einsatz kommen, wird ADS wohl den Index aus Deinem SQL so erstellen, wie Manfred bereits vorgegeben;) Den Concatenator ';' gibt es nur bei ADT.
- Marcus Herz
- 1000 working lines a day
- Beiträge: 863
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 40 Mal
- Danksagung erhalten: 197 Mal
- Kontaktdaten:
Re: Group by [ERLEDIGT]
Hallo Manfred
In deinem ZIP fehlen die Indexe. Kannst du mir dir Definitonen schicken. Nicht die CDX selber.
In deinem ZIP fehlen die Indexe. Kannst du mir dir Definitonen schicken. Nicht die CDX selber.
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Re: Group by [ERLEDIGT]
fahrzeuge -> Str(kfznr,9)
fahrzeugarten -> id
hersteller -> id
tankbuch -> Str(kfznr,9,0) + DToS(tankdatum) + tankzeit
fahrzeugarten -> id
hersteller -> id
tankbuch -> Str(kfznr,9,0) + DToS(tankdatum) + tankzeit
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Group by [ERLEDIGT]
Ich habe mir jetzt auch einmal alles angeschaut und auch die Beispieldaten von Manfred in einem Data Dictionary eingetragen. Bevor ist loslege, habe ich noch (vermutlich ein paar) FragenManfred hat geschrieben: ↑So, 21. Nov 2021 16:57 vielleicht ist die Frage von mir auch nicht richtig rübergekommen.
Es gibt eine Menge an Fahrzeugen. Die möchte ich komplett aufgelistet haben. Aber zu jedem Fahrzeug gibt es eine weitere unendliche Menge an Einträgen im Tankbuch. Aus dem brauche ich aber nur de Eintrag mit dem höchsten DAtum. Wenn der gefunden wurde, dann muß ich dazu auch die Menge haben, die getankt wurde. Es würde auch genügen, wenn ich zu jedem Tankvorgang eines Fahrzeugs den ich finde immer nur den ersten nehme. Der steht dann sowieso am Anfang, weild er Index so gesetzt ist. Das klang mit TOP 1 für mich so, als wenn es klappen würde.
1) Interessieren Dich nur Fahrzeuge, bei denen es schon mindestens einen Tankvorgang gegeben hat?
2) Und dann jeweils nur den letzten Eintrag (vereinfacht gesagt, den mit dem höchsten Datum)?
Edit: "Di" in "Dich" geändert
Edit2: folgendes hinzugefügt
Mit dem folgenden Statement bekommt man alle gesuchten Tankvorgänge. Kannst Du damit etwas anfangen?
Code: Alles auswählen
select Tb.*
from Tankbuch Tb
inner join (
select Tb.KfzNr,Max( Tb.TankDatum ) TankDatum
from Tankbuch Tb
group by Tb.KfzNr
) Tb2 on Tb.KfzNr = Tb2.KfzNr and Tb.TankDatum=Tb2.TankDatum
order by Tb.TankDatum,Tb.Tankzeit
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Re: Group by [ERLEDIGT]
Hi Uli,
Du bist das Thema andersherum angegangen. Ich benötige "alle Fahrzeuge" und dazu die letzten Tankdaten. Du hast die Tankdaten genommen und dazu die Fahrzeuge angezeigt. Das ist so nicht gefordert
Es geht eigentlich darum alle Fahrzeuge anzuzeigen und dann, wenn vorhanden, die Tankdaten auch. Ansonsten nur die Fahrzeuge. Meine ich aber anhand meines Beispiel auch so gezeigt zu haben
Du bist das Thema andersherum angegangen. Ich benötige "alle Fahrzeuge" und dazu die letzten Tankdaten. Du hast die Tankdaten genommen und dazu die Fahrzeuge angezeigt. Das ist so nicht gefordert
Es geht eigentlich darum alle Fahrzeuge anzuzeigen und dann, wenn vorhanden, die Tankdaten auch. Ansonsten nur die Fahrzeuge. Meine ich aber anhand meines Beispiel auch so gezeigt zu haben
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Group by [ERLEDIGT]
Doch natürlich möchtest Du das, Du weißt es nur nicht .
Ich zeige Dir gleich, wie man daraus die Liste mit den Fahrzeugen macht.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Group by [ERLEDIGT]
Bitte sehr .
Code: Alles auswählen
select Tb.TankDatum,Tb.KmStand,Tb.Menge,Fz.*
from Fahrzeuge Fz
left outer join(
select Tb.*
from Tankbuch Tb
inner join (
select Tb.KfzNr,Max( Tb.TankDatum ) TankDatum
from Tankbuch Tb
group by Tb.KfzNr
) Tb2 on Tb.KfzNr = Tb2.KfzNr and Tb.TankDatum=Tb2.TankDatum
) Tb on Fz.KfzNr = Tb.KfzNr
order by Tb.KfzNr,Tb.TankDatum,Tb.Tankzeit
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Re: Group by [ERLEDIGT]
ok, das ist aber nicht mehr das, was Du noch weiter oben geschrieben hast. Sieht aber erstmal interessant aus das Ergebnis. Mal prüfen, ob es das ist was ich brauche könnte. Dauert von der Zeit her ca. genauso lange, wie meine letzte Version, mit der ich klar kommen würde. Die aber dann ganz anders aussieht als Dein Vorschlag. Aber der Weg ist ja bekanntlich das Ziel.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Marcus Herz
- 1000 working lines a day
- Beiträge: 863
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 40 Mal
- Danksagung erhalten: 197 Mal
- Kontaktdaten:
Re: Group by [ERLEDIGT]
Ich versuch gerade, das Zeitverhalten paralell in ADT zu testen. Melde mich
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Group by [ERLEDIGT]
Doch, dass ist exakt das Gleiche.
Es ging ja auch erst einmal darum, das SQL Statement so einfach wie möglich zu schreiben. Jetzt muß man nur noch das Statement von meinem Beitrag von gestern 17:55 zeitlich optimieren.
Edit: alternativ könnte man auch eine passende Funktion im Data Dictionary integrieren.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- nightcrawler
- 1000 working lines a day
- Beiträge: 656
- Registriert: Di, 24. Apr 2012 16:33
- Wohnort: 72184 Weitingen
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 97 Mal
- Kontaktdaten:
Re: Group by [ERLEDIGT]
Hallo Manfred,
ich denke nicht, dass Du das Statement wesentlich schneller bekommst, da durch die Aggregation doch viel Zeit verloren geht. Zudem hast Du ein Problem mit dem Datum: Was ist, wenn an einem Tag dasselbe Fz zweimal getankt wird?
Du musst zwingend eine ID einsetzen, die streng chronologisch zumindest über ein Fahrzeug ist. Dann kannst Du diese verwenden.
Beispiel:
die jeweils neuesten Tankeinträge bekommst Du dann mit:
diese kannst Du Dir gleich in einer View hinterlegen.
Dann gehst Du weiter wie von Uli beschrieben vor (nur statt dem komplexen inneren Statement die View verwenden). Evtl wirst Du dadurch schneller.
ich denke nicht, dass Du das Statement wesentlich schneller bekommst, da durch die Aggregation doch viel Zeit verloren geht. Zudem hast Du ein Problem mit dem Datum: Was ist, wenn an einem Tag dasselbe Fz zweimal getankt wird?
Du musst zwingend eine ID einsetzen, die streng chronologisch zumindest über ein Fahrzeug ist. Dann kannst Du diese verwenden.
Beispiel:
Code: Alles auswählen
try drop table tankbuch; catch all end try;
create table tankbuch(id integer, kfznr integer, tankdatum date, menge double);
insert into tankbuch values
(1,1,'01.01.2021', 45.3),
(2,1,'10.01.2021', 43.8),
(3,1,'01.02.2021', 50.4),
(4,2,'05.01.2021', 53.3),
(5,2,'04.02.2021', 45.3),
(6,2,'30.06.2021', 55.7);
Code: Alles auswählen
select a.* from tankbuch a
inner join(
select max(id) as id from tankbuch
group by kfznr
) b on a.id=b.id
Dann gehst Du weiter wie von Uli beschrieben vor (nur statt dem komplexen inneren Statement die View verwenden). Evtl wirst Du dadurch schneller.
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Re: Group by [ERLEDIGT]
Hi Joachim,
genau das liegt der Hase im Pfeffer. Dann wird aber innerhalb des Datums nochmal nach Zeit sortiert und der letzte Vorgang liegt am Anfang. Da kann ich dann mit meinem eingangs erwähnten Script das Ergebnis verarbeiten, indem ich eifnach den ersten Eintrag nehme un der ist dann richtig.
genau das liegt der Hase im Pfeffer. Dann wird aber innerhalb des Datums nochmal nach Zeit sortiert und der letzte Vorgang liegt am Anfang. Da kann ich dann mit meinem eingangs erwähnten Script das Ergebnis verarbeiten, indem ich eifnach den ersten Eintrag nehme un der ist dann richtig.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Group by [ERLEDIGT]
Manfred, das ist halt schwieriger zu optimieren. Ich hatte genau das gleiche Problem, dass die Eindeutigkeit nur über 2 Felder möglich war. Da schaue ich mal, wie ich das gelöst habe. Ich meine, ich habe die Berechnung trotz mehrerer Millionen Datensätze auf unter 1 Sekunde reduzieren können.
Wenn man die Tabellenstruktur ändern kann, wäre es das Einfachste, Datum und Uhrzeit in einem Feld (möglichst als Zeitstempel) zusammenzufassen.
Wenn man die Tabellenstruktur ändern kann, wäre es das Einfachste, Datum und Uhrzeit in einem Feld (möglichst als Zeitstempel) zusammenzufassen.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- nightcrawler
- 1000 working lines a day
- Beiträge: 656
- Registriert: Di, 24. Apr 2012 16:33
- Wohnort: 72184 Weitingen
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 97 Mal
- Kontaktdaten:
Re: Group by [ERLEDIGT]
Vor lauter Daten die Struktur nicht gesehen ... die Tankzeit ist mir bisher rausgegangen. Wie Uli schrieb: Timestamp verwenden. Mit DBF nicht ganz so leicht, da könntest Du evtl auf eine Char-Notation ausweichen (yyymmdd hh:mm), dann klappt die Sortierung zumindest immer sauber.
Oder noch einfacher: Du packst einen Trigger um Dein Tankbuch und bei jedem Eintrag wird der letzte Stand redundant in die FZ-Tabelle gespeichert.
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Re: Group by [ERLEDIGT]
mein Wunsch ist es zwischen den Feiertagen alles von DBF auf ADT umzustellen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Group by [ERLEDIGT]
Ich habe mir ein ähnliches zeitliches Problem aus der Vergangenheit angeschaut. Das habe ich rasend schnell hinbekommen und würde unter einer bestimmten Voraussetzung auch bei Dir funktionieren:
Kann man davon ausgehen, dass je Fahrzeug die Tankbelege in der richtigen zeitlichen Reihenfolge angelegt werden? Also Fahrzeug X hat z.B. am 1.12. und am 8.12. getankt. Wird dann grundsätzlich der Beleg vom 1.12. vor dem Beleg vom 8.12. erfasst?
Kann man davon ausgehen, dass je Fahrzeug die Tankbelege in der richtigen zeitlichen Reihenfolge angelegt werden? Also Fahrzeug X hat z.B. am 1.12. und am 8.12. getankt. Wird dann grundsätzlich der Beleg vom 1.12. vor dem Beleg vom 8.12. erfasst?
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2950
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Group by [ERLEDIGT]
Das anzunehmen, ist aber gefährlich und m.E. nicht gut. Dafür gibt es ja dann - bei normalen DBF - einen Index, damit die Reihenfolge stimmt.
Viele Grüße
Wolfgang
Wolfgang
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Re: Group by [ERLEDIGT]
die dbf wird sequentiell gefüllt. Ohne Index. Also so wie Du vermutet hast Uli.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!