This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
sql:tutorials:selectrecordwithmaxdatepergroup [09.02.2017 09:00:15] yaslaw [Einfaches Subquery mit IN()] |
sql:tutorials:selectrecordwithmaxdatepergroup [09.02.2017 09:03:01] yaslaw [Mittels DMAX() in MS Access] |
||
---|---|---|---|
Line 48: | Line 48: | ||
SELECT w1, w2, MAX(datum) AS max_datum | SELECT w1, w2, MAX(datum) AS max_datum | ||
FROM kurs | FROM kurs | ||
- | GROUP BY w1, w2; | + | GROUP BY w1, w2 |
) AS le | ) AS le | ||
WHERE | WHERE | ||
Line 66: | Line 66: | ||
SELECT w1, w2, MAX(datum) AS max_datum | SELECT w1, w2, MAX(datum) AS max_datum | ||
FROM kurs | FROM kurs | ||
- | GROUP BY w1, w2; | + | GROUP BY w1, w2 |
) AS le | ) AS le | ||
ON | ON | ||
Line 79: | Line 79: | ||
Natürlich kann man das auch mit IN() im WHERE-Bereich erledigen | Natürlich kann man das auch mit IN() im WHERE-Bereich erledigen | ||
<code sql>SELECT k.* | <code sql>SELECT k.* | ||
- | FROM | + | FROM kurs AS k |
- | kurs AS k | + | |
WHERE | WHERE | ||
(k.w1, k.w2, k.datum) IN ( | (k.w1, k.w2, k.datum) IN ( | ||
Line 93: | Line 92: | ||
oder als Korrelierte Unterabfrage | oder als Korrelierte Unterabfrage | ||
- | <code sql>SELECT | + | <code sql>SELECT k.* |
- | k.* | + | FROM kurs AS k |
- | FROM | + | |
- | kurs AS k | + | |
WHERE | WHERE | ||
k.datum IN ( | k.datum IN ( | ||
- | SELECT MAX(datum) AS max_datum | + | SELECT MAX(datum) AS max_datum |
- | FROM kurs | + | FROM kurs |
- | WHERE kurs.w1 = k.w1 | + | WHERE kurs.w1 = k.w1 AND kurs.w2 = k.w2 |
- | AND kurs.w2 = k.w2 | + | GROUP BY w1, w2 |
- | GROUP BY w1, | + | );</code> |
- | w2 | + | |
- | ) | + | |
- | ;</code> | + | |
==== Mittels DMAX() in MS Access ==== | ==== Mittels DMAX() in MS Access ==== | ||
Line 112: | Line 106: | ||
In MS Access kann man auch mit DMAX() arbeiten. Mit DMAX() das aktuelleste Datum auslesen und im WHERE verknüpfen | In MS Access kann man auch mit DMAX() arbeiten. Mit DMAX() das aktuelleste Datum auslesen und im WHERE verknüpfen | ||
- | <code sql>SELECT | + | <code sql>SELECT k.* |
- | k.* | + | FROM kurs AS k |
- | FROM | + | WHERE k.datum = DMAX("datum", "kurs", "[w1]='" & k.w1 & "' AND [w2]='" & k.w2 & "'") |
- | kurs AS k | + | |
- | WHERE | + | |
- | k.datum = DMAX("datum", "kurs", "[w1]=" & k.w1 & " AND [w2]=" & k.w2) | + | |
;</code> | ;</code> | ||