title image


Smiley Re: Tabelle nach Uhrzeit und Datum selektieren
Ein weiteres Problem neben dem von J4F genannten

liegt in der Trennung des Datums und der Uhrzeit;

besser wäre es, sie würden in einem Feld stehen, denn bei

Nr Uhrzeit Datum Score1 Score2 Laufrate Pumpe

12345 13.30 25.06.04 4 4 5 PCEA

12345 15.00 26.06.04 3 3 3 PCEA

12345 14.30 27.06.04 4 4 4 PCEA

erhälst du mit "max" nämlich so ein Ergebnis

Nr Uhrzeit Datum

12345 15.00 27.06.04

und so einen Datensatz gibt es nicht.



Für die Lösung braucht es daher drei Schritte:

1. Datum- und Uhrzeit-Feld zusammensetzen zu einem Feld

2. für jede Nummer den jüngsten Eintrag finden und

3. dann die Werte der anderen Felder zu diesem jüngsten Eintrag finden



Für den ersten Schritt kommt's darauf an, ob das Uhrzeit- und das Datumsfelds den Datentyp Datum haben oder Text.

Sind beide vom Typ Datum, kann man sie durch eine simple Addition vereinen:

DatumKomplett: Datum + Uhrzeit.

Sind beide vom Typ Text, setzt man die beiden Texte zusammen und wandelt dann den Datentyp um:

DatumKomplett: CDate(Datum & " " & Uhrzeit)

Im weiteren gehe ich davon aus, daß die beiden Felder den Datentyp Datum haben.



Erstelle nun eine erste Abfrage, die alle Felder und das komplette Datum

beinhaltet zB. unter dem Namen "qryVereintesDatumsfeld" -

sie hat dann so eine SQL (Hauptmenübefehl Ansicht->SQL-Ansicht):

SELECT *, CDate(Datum & " " & Uhrzeit) AS DatumKomplett

FROM DieTabelle

Natürlich mußt Du den Tabellennamen anpassen.



Dann brauchst es zweite Abfrage "qryJüngsterEintrag",

die den jüngsten Eintrag je Nummer findet:

SELECT Nr, Max(DatumKomplett) AS DatumKomplettMaximum

FROM qryVereintesDatumsfeld

GROUP BY Nr



Die dritte Abfrage beruht auf den beiden bisherigen Abfragen.

Sie muß in der grafischen Entwurfsansicht eine Verbindungslinie zwischen den beiden Nr-Feldern

und dem Feld "DatumKomplett" aus der Abfrage "qryVereintesDatumsfeld"

und "DatumKomplettMaximum" aus der Abfrage "qryJüngsterEintrag" haben.

Außerdem müssen alle Felder aus der Abfrage "qryVereintesDatumsfeld" angezeigt werden.

Sie hätte so eine SQL:

SELECT qryVereintesDatumsfeld.*

FROM qryVereintesDatumsfeld INNER JOIN [qryJüngsterEintrag]

ON qryVereintesDatumsfeld.Nr = [qryJüngsterEintrag].Nr

AND qryVereintesDatumsfeld.DatumKomplett = [qryJüngsterEintrag].DatumKomplettMaximum



Man könnte auch alle drei Abfragen in einer schreiben:

SELECT x1.*

FROM

(SELECT *, CDate(Datum & " " & Uhrzeit) AS DatumKomplett FROM DieTabelle) AS x1

INNER JOIN

(SELECT Nr, Max(CDate(Datum & " " & Uhrzeit)) AS DatumKomplettMaximum FROM DieTabelle GROUP BY Nr) AS x2

ON x1.Nr = x2.Nr

AND x1.DatumKomplett = x2.DatumKomplettMaximum



*klugscheißmodus aus* :-)



Gruß

Robert



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: