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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 138299
Url: https://administrator.de/contentid/138299
Ausgedruckt am: 23.11.2024 um 02:11 Uhr
5 Kommentare
Neuester Kommentar
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.
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.
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.
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]
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]