Jag har en tabell med 4 fält. admin, fund, rate och ratedate.
De första två är strängar, rate är en float och ratedate är ett datum.
Nu vill jag hämta ut fälten, men den ska bara ta de fält där ratedate är störst (eller senaste datumet om så vill) för varje (admin, fund). Alltså, admin och fund måste grupperas på något sätt? För dom hör ihop.
Mitt försök ser ut såhär:
SELECT * FROM funds_gein GROUP BY admin, fund ORDER BY ratedate desc
Men det fungerar inte som det ska. Den gör som den ska med den enda skillnaden att den verkar ta det första datumet istället för det senaste.
Nån som begriper mitt problem?
r/ Problemet verkar vara att den grupperar innan den kör ORDER. Då är det ju logiskt att det blir som det blir, eftersom det äldsta datumen ligger överst.. men hur göra?
select * from funds_gein fg
where ratedate = (
select max(ratedate) from funds_gein
where fund = fg.fund
and admin = fg.admin)
You have an error in your SQL syntax near 'select max(ratedate) from funds_gein where fund = fg.fund and admin = fg.admin)' at line 1
Jag kör mySQL om det har någon betydelse.
I Mysql får man dela upp det i flera steg, det finns en beskrivning i manualen som du borde hitta om du tittar igenom innehållsförteckningen. Den heter ungefär getting the piecewise maximum. Eller så får du vänta påå nästa version av Mysql.
Märker att jag fortfarande har problem. Nu tar den ut det senaste datumet, fast tillsammans med den äldsta kursen (rate). Även fast dom alltså inte hör ihop
T.ex
select admin, fund, rate, max(ratedate) from funds_gein GROUP BY admin, fund
ger mej
Det går inte att använda group by för detta. Att din sql-sats överhuvudtaget blir godkänd beror på ett fel i Mysql. Vilket värde du får på rate är slumpmässigt.