Zitat von
alzaimar:
Mach Dir man keine Sorgen (SELECT TOP 1...),
MSSQL ist um längen schneller, mächtiger, skalierbarer, robuster und besser als Firebird & Co.
Wurde aber erst mit dem aktuellen 2005'er aus Sicht einer Oracle-verwöhnten Göre interesant. Alle Versionen vorher waren zumindest im Transaktionsmodell einfach peinlich.
FB scheint sich mit jedem bisschen was sie von Interbase rausschmeißen zu verbessern.
@Topic
Eine selectable Procedure wäre hier nun wirklich witzlos, auch wennn
SQL ziemlich schnell ziemlich eklig wird, wenn es um Aggregationen geht. (hässlich ist es ja sowieso immer
)
Als Erbchleicher wäre wahrscheinlich eine Liste der Ids aller Preise ausreichend um bereits vorher geholte Instanzen der Preise wiederzufinden:
SQL-Code:
SELECT p.Id
FROM Artikel a
INNER JOIN Preise p ON p.Artikel = a.ID
INNER JOIN Preise filter ON p.Artikel = a.ID
WHERE filter.Datum <= @Suchdatum
GROUP BY p.Id, p.Datum
HAVING p.Datum = max(filter.Datum)
Als RADieschen braucht man mehr Spalten, wodurch die Gruppierung aufwendiger wäre als die SubQuery aus Dominiks Beispiel.
(MSSQL hatte vor 2005 leider den Hang dazu, SubQueries gerne mal für jeden Datensatz zu neu abzufragen )