webForumDet fria alternativet

top, max eller vad?

ASP

9 svar · 286 visningar · startad av Jörgen HP

Medlem sedan feb. 20012 412 inlägg
Frågan#1

Hej!

Jag har ett fält (int) i en databas också vill jag hämta de 3 största talen. Kan man kombinera MAX och TOP eller hur gör man?

SELECT TOP 3, MAX(Number) FROM ....

eller?

mvh Jörgen

------------------
*** Var går gränsen mellan långa kortbyxor och korta långbyxor? ***

Medlem sedan mars 200135 inlägg
#2

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!

Medlem sedan dec. 19996 721 inlägg
#3

Du vill ta ut de tre största?

SELECT TOP 3 Number FROM tabellen ORDER BY Number DESC

Medlem sedan feb. 20012 412 inlägg
#4

Hej!

Fick inte det att fungera så heller, läste någonstans att TOP inte stöds av mysql, stämmer det? :q

Löste det enligt följande istället:


For I = 0 To UBound(arrArtikel,2)

'en massa bla ha

If I = 3 Then Exit For

Next

Också sorterade jag dem i SQL frågan.

Mvh Jörgen ;)

------------------
*** Var går gränsen mellan långa kortbyxor och korta långbyxor? ***

[Redigerat av jorgen den 31 jul 2001]

Medlem sedan dec. 200012 464 inlägg
#5

I mysql:

SELECT Number FROM tabellen ORDER BY Number DESC limit 3

------------------
essentitia preter non sans multiplicandum

Medlem sedan feb. 20012 412 inlägg
#6

Kanon, fungerar perfekt! :D :D

------------------
*** Var går gränsen mellan långa kortbyxor och korta långbyxor? ***

[Redigerat av jorgen den 31 jul 2001]

Medlem sedan sep. 2000206 inlägg
#7

*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...

------------------
/Sophie*

Medlem sedan dec. 200012 464 inlägg
#8

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

[Redigerat av LarsG den 31 jul 2001]

Medlem sedan feb. 20012 412 inlägg
#9

Det LarsG inte fixar inom SQL är inte värt att veta :e :e

Jörgen HP

------------------
*** Var går gränsen mellan långa kortbyxor och korta långbyxor? ***

Medlem sedan sep. 2000206 inlägg
#10

ojj.. Ja det var snabba ryck... Måste testa direkt när jag kommer hem...

------------------
/Sophie*

250 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)