Zitat:
|
Zitat von jussen
hmm ... musst nen bisl probiern aber ich geb ma hier nen paar denkanstöße wies funktionieren könnte.
Evtl. unterstützt date die max funktion. Einfach wäre beispielsweise
Code:
SELECT * FROM Tabelle
WHERE name = (SELECT name FROM Tabelle WHERE gueltig_ab =
(SELECT MAX(gueltig_ab) FROM Tabelle)
coolere lösung auf die schnelle wüsst ich auch nich. ich denke du wirst es nicht mit einem nicht-verschalteltem statement hinbekommen.
|
Bei der Lösung kommt aber was ganz andres raus.
Du stellst als Bedingung, dass der name = dem namen ist, dessen gueltig ab genauso groß wie das größte gueltig ab der tabelle ist.
das heißt, du bekommst den ersten und den letzten datensatz zurück, da dort der name nr 1 ist, welcher an der vierten stelle den größten wert bei gueltig ab hat.
ich hab jetzt meine lösung mal auf die beispieltabelle übertragen und schon sieht sie gar nicht mehr sooooo kompliziert aus.
Code:
SELECT * FROM tbl_test as t1
WHERE gueltig_ab =
(SELECT max(gueltig_ab)
FROM tbl_test as t2
WHERE t2.name = t1.name)
ein einfacher join ist ja ok ... mein prob ist nur, dass diese beispieltabelle (tbl_test) in wirklichkeit schon aus drei tabellen besteht!
und da das innere SELECT ja für jede spalte einzeln nochmal ausgeführt wird, wird das bei ca 2000 datensätzen in einer, 5000 in der zweiten und (nur) 10 in der dritten bei nem 6-fach-join schon relativ umfangreich
wenn jemand ne idee hat, wie ich das ohne dieseS (hier unproblematischen, in meinem fall aber relativ ungünstigen) innere SELECT lösen kann: her damit
Danke
EDIT: erm ... ist das order by und limit denn schneller als ein max (in meinem fall jetzt) ?