AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi RefId,date,time, Refid und höchstes Datum/Zeit ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

RefId,date,time, Refid und höchstes Datum/Zeit ermitteln

Ein Thema von hoika · begonnen am 29. Sep 2009 · letzter Beitrag vom 30. Sep 2009
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#1

RefId,date,time, Refid und höchstes Datum/Zeit ermitteln

  Alt 29. Sep 2009, 05:09
Datenbank: Firebird • Version: 1.5 • Zugriff über: egal
Hallo #,

ich habe folgende Tabelle

id integer (prim key, spielt hier aber keine Rolle)
refid integer
thedate date date Anteil
thetime date time Anteil

Ist also Dialekt 1.

Die gleiche refid kommt mehrfach vor.

Ich brauche jetzt für jede RefId das höchste theDate+theTime,
das muss ja irgendwie über group by / max gehen ?
Genau das ist meine Schwäche ..

Ein SubSelect will ich vermeiden.

Danke


Heiko
Heiko
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

Re: RefId,date,time, Refid und höchstes Datum/Zeit ermitteln

  Alt 29. Sep 2009, 09:03
Hallo,

täte mal vermuten, dass es in dieser Art gehen müsste (habe kein Firebird zur Verfügung):select refid, max(thedate + thetime) As TheDateTheTime from tabelle group by refid Alternative könnte auch noch dieses möglich sein:select refid, max(thedate) As TheDate, Max(thetime) As TheTime from tabelle group by refid
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

Re: RefId,date,time, Refid und höchstes Datum/Zeit ermitteln

  Alt 29. Sep 2009, 09:08
Zitat von nahpets:
Alternative könnte auch noch dieses möglich sein:select refid, max(thedate) As TheDate, Max(thetime) As TheTime from tabelle group by refid
Das geht fast immer schief!
Code:
id date       time
 1  01.01.2009  03:00:00
 1  02.01.2009  02:00:00
 1  03.01.2009  01:00:00
Deine Abfrage würde nun folgendes liefern:

Code:
1  03.01.2009  03:00:00
Und den Datensatz gibt es so gar nicht

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

Re: RefId,date,time, Refid und höchstes Datum/Zeit ermitteln

  Alt 29. Sep 2009, 09:22
Hallo,

@Sir Rufo

das würde doch heißen, dass im Ergebnis Spalteninhalte unterschiedlicher Zeilen gemischt werden. Das dies bei SQL der Fall ist, wäre mir neu.

Meiner Meinung nach wird die Zeile aus der Tabelle gewählt, bei der zu einer RefID TheDate und TheTime die höchsten Werte haben, im Beispiel also
Code:
1  03.01.2009  01:00:00
Zumindest SQL-Server verhält sich so.
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#5

Re: RefId,date,time, Refid und höchstes Datum/Zeit ermitteln

  Alt 29. Sep 2009, 09:34
Hallo Heiko,

separierte DATE und TIME Datentypen gibt es in Dialekt 3 und nicht in Dialect 1. Bist du dir sicher, dass du Dialekt 1 verwendest?

Folgendes sollte eigentlich schon klappen:

select refid, max(thedate + thetime) from tabelle group by refid
Oder wenn nur ein Feld (DATE in Dialekt 1):

select refid, max(thedatetime) from tabelle group by refid
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

Re: RefId,date,time, Refid und höchstes Datum/Zeit ermitteln

  Alt 29. Sep 2009, 23:20
Zitat von nahpets:
Hallo,

@Sir Rufo

das würde doch heißen, dass im Ergebnis Spalteninhalte unterschiedlicher Zeilen gemischt werden. Das dies bei SQL der Fall ist, wäre mir neu.

Meiner Meinung nach wird die Zeile aus der Tabelle gewählt, bei der zu einer RefID TheDate und TheTime die höchsten Werte haben, im Beispiel also
Code:
1  03.01.2009  01:00:00
Zumindest SQL-Server verhält sich so.
welcher?

MySQL (5.1.33) liefert genau mein vorhergesagtes Ergebnis zurück (mich hätte alles andere auch gewundert)

Hast du das mal ausprobiert? btw: hier wird ein GROUP BY durchgeführt, da werden alle Zeilen zusammengefasst (die dem schlüssel von group by entsprechen)

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: RefId,date,time, Refid und höchstes Datum/Zeit ermitteln

  Alt 30. Sep 2009, 06:39
Zitat:
das würde doch heißen, dass im Ergebnis Spalteninhalte unterschiedlicher Zeilen gemischt werden. Das dies bei SQL der Fall ist, wäre mir neu.
Es wird nicht gemischt, sondern ein Aggegat über mehrere Werte gebildet. In diesem Fall wird der größte Tag und die größte Zeit ermittelt und diese sind mit großer Wahrscheinlichkeit aus verschiedenen Datensätzen.
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: RefId,date,time, Refid und höchstes Datum/Zeit ermitteln

  Alt 30. Sep 2009, 16:14
Hallo,

danke für die Antworten.

<Thomas>
ich meinte nur, dass der Datum und Zeitanteil getrennt sind (beides in DATE-Feldern).
Das hätte ich mir auch knicken können, weil das Max(theDate+theTime)
ja klar ist.

Ich werde es mal ausprobieren.


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:09 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