2011-01-14 2 views
0

So habe ich eine Tabelle mit verschiedenen Elementen und Daten. Es sieht im Wesentlichen wie folgt:Holen Sie sich das kleinste Datum für jedes Element in der Zugriffsabfrage

actieElement beginDatum 
1    1/01/2010 
1    1/01/2010 
1    10/01/2010 
2    1/02/2010 
2    3/02/2010 

Was ich jetzt brauche das kleinste Datum für jeden actieElement ist. Ich habe eine Lösung gefunden, die eine einfache GROUP BY-Anweisung verwendet, aber auf diese Weise verliert die Abfrage ihren Gültigkeitsbereich und Sie können nichts mehr ändern.

Ohne die GROUP BY-Anweisung erhalte ich mehrere Daten für jedes actieElement, weil bestimmte Daten identisch sind.

Ich dachte an so etwas, aber es funktioniert auch nicht, wie es der Unterabfrage mehr als 1 Datensatz geben würde:

SELECT s1.actieElement, s1.begindatum 
FROM tblActieElementLink AS s1 
WHERE (((s1.actieElement)=(SELECT TOP 1 (s2.actieElement) 
      FROM tblActieElementLink s2 
      WHERE s1.actieElement = s2.actieElement 
      ORDER BY s2.begindatum ASC))); 
+0

Was meinst du mit ‚ou kann nichts mehr ändern‘ und was genau Sie – Mark

+0

MS Access erlaubt keine Aktualisierungsabfragen zu tun, die versuchen, auf Verknüpfungen (entweder explizit oder implizit), bei denen eine Seite von Der Join ist nicht aktualisierbar. Wir haben in diesen Situationen temporäre Tabellen verwendet; nicht anders herum. – Arvo

Antwort

1

Versuchen Sie, diese

SELECT s1.actieElement, s1.begindatum 
FROM tblActieElementLink AS s1 
WHERE s1.begindatum =(SELECT MIN(s2.begindatum) 
      FROM tblActieElementLink s2 
      WHERE s1.actieElement = s2.actieElement 
     ); 
-1

eine DISTINCT-Klausel in Ihrem WÄHLEN.

+0

Und Sie schlagen vor, dass dies die Bearbeitbarkeit verbessern wird? Ernst? –

+1

Bearbeitbarkeit? Worüber redest du? Ich habe nur versucht, Hilfe bei der Lösung des Problems zu leisten. –

0
SELECT DISTINCT T1.actieElement, T1.beginDatum 
    FROM tblActieElementLink AS T1 
     INNER JOIN (
        SELECT T2.actieElement, 
          MIN(T2.beginDatum) AS smallest_beginDatum 
        FROM tblActieElementLink AS T2 
        GROUP 
         BY T2.actieElement 
       ) AS DT1 
      ON T1.actieElement = DT1.actieElement 
      AND T1.beginDatum = DT1.smallest_beginDatum; 
Verwandte Themen