![]() |
SQL Group By Problem
Also ich denke für einen echten SQL-Pro ist das sicher ein lächerliches Problem...:
Die Tabelle sieht Preis sieht so aus: Preis_ID / Preis / Datum / FK_Artikel 1 / 10 / 1.1.2003 / 1 2 / 11 / 2.1.2003 / 1 3 / 15 / 6.1.2003 / 1 4 / 34 / 2.1.2003 / 2 5 / 35 / 7.1.2003 / 2 ... usw Jetzt möchte ich gerne den aktuellsten Preis für jeden Artikel haben: Das geht einfach mit SELECT Preis, Max(Datum) FROM Preis GROUP BY FK_Artikel dachte ich. Geht natürlich nicht... er sagt, dass Preis dann kein Teil einer Aggregat-funktion ist. Aber Ich WILL nicht nach dem Preis gruppiern. Ich will halt einfach nur nach dem Artikel gruppieren (immer nur den Preis pro Artikel, der am aktuellsten ist) Wenn ich dann doch noch Preis in die Group-By-Klausel nehm bekomm ich plötzlich alle Preise für einen Artikel und nicht mehr nur den atkuellsten... Bin schon völlig verzweifelt, bitte helft mir einer in meiner Unwissenheit! |
Versuch ein ORDER BY fuer den Artikel, dann einen fuer das Datum und dann ein LIMIT damit nur 1 Artikel angezeigt wird.
mfg c. |
hallo,
versuch's mit select preis_id,preis,artikel,datum from tabpreis where datum in (select max(datum) from tabpreis group by artikel) g dr |
@delphirocks
ich denke, dass durch die zweite SQL Abfrage ein wenig Overhead ensteht, der nicht noetig ist. (Allerdings habe ich keine Benchmarks, die das belegen ;) ) c. |
sorry, schlimmer ist, dass sie falsch ist :(
|
hö?
@sagi: bitte schreib mir doch das ganze select-statement auf. hab LIMIT ehrlich gesagt noch nicht verwendet...
@delphirocks: ja, leider falsch :) gibt ja dann wohl nur den artikel mit dem größten datum aus... Aber das kann doch nicht sein, dass es dafür keine Löstung gibt... das ist ja kein so unwahrscheinliches problem. dass man über das group-by dann noch zusätzliche infos braucht |
Ein Blick in die Dokumentation wird helfen:
http://www.mysql.com/documentation/m...e.html#IDX1367 http://www.wisenut.com bringt sicherlich noch andere Dokus. mfg c. |
ohne gewaehr!
wenns denn wirklich nur ein sql-statement sein soll:
Code:
SELECT FK_Artikel, |
Alle Zeitangaben in WEZ +2. Es ist jetzt 20:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag