Jag vet tyvärr inte hur man kombinerar SQL satser på det viset, går säkert. Men beroende på hur många intar du har i din databas kan du ju lägga alla i en array och loopa igenom den två ggr för att ordna den i storleksordning för att sen plocka ut de tre som du vill. Detta är ju dock helt förkastligt om du har för stor databas. Lycka till!
*ha* Det där var lite roligt. Jag är ute efter ungefär samma sak. Men... Nu behöver ingen sätta sig och knappa kod, men rent teoretiskt. Jag har en lång lista med namn och skulle vilja ta ut top tio för varje namn... Går det? Ja så klart att det säkert går, men kan man använda sql till det? Nej det går säkert inte...
Alltså. Jag har olika användare och de kan ha allt mellan 1 poängpost till hur många poängposter som helst och jag vill plocka ut deras 10 bästa och summera de. Sen gärna skriva hur många poster som räknas in i den totala slutsumma.
Ansträng er inte mer med detta, jag vill bara veta om det är möjligt...
Om en person kan ha flera poster med samma poäng så går det inte direkt med en sql-sats. Däremot om man vet att en viss poängsumma bara förekommer en gång per person så borde det gå med följande
select sum(points),name,case when count(points) > 10 then 10 else count(points) end as items
from ogrish o
where points in (select top 10 points
from ogrish
where name = o.name order by points desc)
group by name
Borde fungera i SQL server. Om du använder Access så får man byta ut case mot en iif.
Red: inser att case är onödigt
select sum(points),name,count(points) as items
from ogrish o
where points in (select top 10 points
from ogrish
where name = o.name order by points desc)
group by name
------------------ essentitia preter non sans multiplicandum