stevensqwe
Goto Top

ACCESS doppelte Min-Abfrage

Hallo!
Stehe gerade tierisch auf dem Schlauch, wie ich eine doppelte Min-Abfrage unter Access hinbekomme und wäre über etwas Hilfe dankbar!

Folgendes Problem:
Tabelle A enthält 20 Spalten, unter denen auch die Spalten LotNumber, StartDate und StartTime sind.
Ich möchte mir nun in der Abfrage das kleinste Datum mit der kleinsten Zeit je LotNumber anzeigen lassen.

D.h. bei

LotNumber StartDate StartTime
123 19.01.2010 9:35
123 19.01.2010 10:45
123 20.01.2010 11:03
333 18.01.2010 8:00
333 19.01.2010 6:00

wäre das Ergebnis:

LotNumber StartDate StartTime
123 19.01.2010 9:35
333 18.01.2010 8:00

Mein Versuch gibt mir leider nur das Min Datum einer jeden LotNumber aus:

SELECT A.*
FROM LyoTable AS A INNER JOIN [SELECT B.[Lot Number], Min( B.[Start Date]) AS MinStartDate
FROM LyoTable AS B
GROUP BY B.[Lot Number]]. AS C ON (A.[Lot Number]=C.[Lot Number]) AND (A.[Start Date] = C.MinStartDate);

Könnte mir hier jemand weiterhelfen?

Schönen Dank und Gruß,
steven

Content-ID: 138299

Url: https://administrator.de/contentid/138299

Ausgedruckt am: 23.11.2024 um 02:11 Uhr

KalleAtWork
KalleAtWork 16.03.2010 um 08:37:18 Uhr
Goto Top
Hi,

da Du ja nach dem Minimum der Kombination StartDate + StartTime haben willst musst Du das auch einsetzen. Das geht in diesem Fall recht einfach:

SELECT Tabelle4.LotNumber, Min([StartDate]+[StartTime]) AS Ausdr1
FROM Tabelle4
GROUP BY Tabelle4.LotNumber;
stevensqwe
stevensqwe 16.03.2010 um 14:20:56 Uhr
Goto Top
Hi, danke!

Wenn ich jetzt die ursprüngliche Datentabelle wieder aufgreife, und versuche, mir genau diese Datensätze komplett ausgeben zu lassen, dann verlangt er nach dem Parameterwert für StartDateTimeA... was mache ich falsch?

SELECT A.*, A.[Start Time] + A.[Start Date] AS StartDateTimeA
FROM LyoTable AS A INNER JOIN
(SELECT B.[Lot Number], Min(B.[Start Date]+B.[Start Time]) AS StartDateTimeB
FROM LyoTable AS B
GROUP BY B.[Lot Number]) AS C ON (A.[Lot Number]=C.[Lot Number]) AND (A.StartDateTimeA = C.StartDateTimeB);
KalleAtWork
KalleAtWork 16.03.2010 um 15:20:36 Uhr
Goto Top
Also ich würde da drei Abfragen erstellen:

LyoTableA:
SELECT LyoTable.*, [StartDate]+[StartTime] AS StartDateTime
FROM LyoTable;

LyoTableB:
SELECT LyoTableA.[Lot Number], Min(LyoTableA.StartDateTime) AS MinvonStartDateTime
FROM LyoTableA
GROUP BY LyoTableA.[Lot Number];

LyoTableC:
SELECT LyoTableA.*
FROM LyoTableA INNER JOIN LyoTableB ON (LyoTableA.[Lot Number] = LyoTableB.[Lot Number]) AND (LyoTableA.StartDateTime = LyoTableB.MinvonStartDateTime);


Sollte auch mit zwei Abfragen gehen aber ob es mit nur einer geht weiß ich auch nicht. Bin mehr der Abfragenentwurfsrumklicker.
Biber
Biber 16.03.2010 um 15:21:14 Uhr
Goto Top
Moin stevensqwe,

sach mal.... wie viele virtuelle Tabellen und Aliase willst du denn aus der einen verschnarchten LyoTable aufblasen?
zusätzlich zu A, B und C stünden dir zwar noch einige leicht zu merkende andere Alias-Buchstaben zur Verfügung, aber...

--> es gibt auch schönere Hobbies.

Versuch es erstmal mit zwei Aliasen.... dann bleibt dir noch ein bisschen Freizeit für anderes.
SELECT A.*
 FROM LyoTable AS A , 
 (SELECT [Lot Number], Min([Start Time] + [Start Date]) AS StartDateTime
         FROM Lyotable 
             GROUP BY [Lot Number] )  B
WHERE
 (A.[Lot Number] = B.[Lot Number]
AND  
A.[Start Date]+ A.[Start Time]  = B.StartDateTime
);

A propos Freizeit - Für die Benamsung von Tabellenfelden mit "Start Time" und "Start Date" ( statt "StartTime" und "StartDate") etc, also mit "Deppen Leer Zeichen" hat irgendeiner eurer Praktikanten eine Runde Hoffegen verdient. Aber mit den Augenbrauen...

Siehst du, wie kryptisch und unleserlich schon eine Dünnbrett-Query mit 3 Feldern aussieht durch diese "[" und "]" -Füllsel?
Welches arme ohne eigenes Verschulden bei euch eingestellte Wesen soll denn so einen ###, vollkommen ### ### mal später pflegen?

Grüße
Biber
[edit] Upps... überschnitten. Mein Kommentar hat nichts mit Kalle@worx' Ansatz zu tun. [/edit]
stevensqwe
stevensqwe 16.03.2010 um 16:24:55 Uhr
Goto Top
Moin Biber, moin Kalle,
herzlichen Dank für Eure Hilfe!!!
Perfekte Lösung!
Viele Grüße
steven

PS: es gibt schönere Hobbies face-big-smile