Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#3

Re: den richtigen preis finden...

  Alt 19. Apr 2004, 10:25
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
  Mit Zitat antworten Zitat