war auch Bullshit
Willst du nur den geringsten Preis ist es easy:
SQL-Code:
SELECT ArtikelNr
,Min(Preis) min_Preis
FROM Tabelle
WHERE ArtikelNr = :i_ArtikelNr And
Menge <= :i_Menge And
GROUP By ArtikelNr
Willst du aber auch noch die Menge, dann würde es so gehen.
Das sieht eklig aus, ich weiß, aber wenn du einen UNIQUE INDEX auf (ArtikelNR, Menge) legst ist es verdammt schnell, da die
DB keinen Table scan mehr braucht, um die Tabelle zu verknüpfen.
Ein weiterer Index auf ArtikelNr verhindert eine "wirkliche" Gruppierung (die
DB kann die Daten anhand des Index "gruppieren"
).
SQL-Code:
SELECT a.ArtikelNr
,b.Max_Menge
,a.Preis
FROM Tabelle a
,(SELECT subQ.ArtikelNr
,Max(subQ.Menge) max_Menge
FROM Tabelle subQ
WHERE subQ.ArtikelNr = :i_ArtikelNr And
subQ.Menge <= :i_Menge And
GROUP By subQ.ArtikelNr) b
WHERE a.ArtikeNr = b.ArtikelNr And
a.Menge = b.max_Menge