Tabelle mit "Zähler"
am 21.09.2005 09:15:27 von mkHallo,
ich habe zwei Tabellen, in der ersten steht ein Index und ein paar
Daten. Die zweite Tabelle hat ebenso den Index, der auf den Index der
ersten Tabelle verweist. Der Index kommt in der zweiten Tabelle mehrfach
vor, weil die Daten eine Art Historie haben. Der letzte Datensatz ist
durch einen "Zaehler" gekennzeichnet. Also etwa so:
Index Zaehler Wert
123 1 erster Wert
123 2 zweiter Wert
123 3 dritter Wert
124 1 nur ein Wert
usw. Gesucht wird jeweils der 'neuste' Wert, gekennzeichnet durch den
höchsten Zähler. Ausgegangen wird von der ersten Tabelle, wo der Inde=
x
her kommt.
Das ganze habe ich jetzt folgendermaßen gelöst: mit einem Select wird=
der für den passenden Index maximale Zähler ermittelt. Das wiederum w=
ird
in einem neuen Select genutzt, den Wert dafür herauszufinden. Der
nächste Select geht von der ersten Tabelle aus. Hier meine aktuelle
Lösung (mit nicht fiktiven Tabellen):
select MeNu.isn, MeKznNu
from
(SELECT MeNu.ISN, MAX(MeNu.ZAEHLER) AS ZAEHLER
FROM MeNu
GROUP BY ISN) AS maxi LEFT OUTER JOIN
(SELECT MeNu.MeKznNu, ISN, Zaehler
FROM MeNu) as MeNu
ON (MeNu.ISN =3D maxi.ISN) AND (MeNu.Zaehler =3D maxi.Zaehler)
Diesen Konstrukt brauche ich sehr häufig. In größeren Abfragen wä=
ren
mehrere davon nötig, was das Query äußerst komplex und schwer zu le=
sen
macht. Ich suche jetzt eine einfachere Möglichkeit für dieses (wie ic=
h
finde gängiges) Problem. Gibt es diese?
Vielen Dank im Voraus,
Markus