Avatar billede canedo Nybegynder
22. november 2001 - 09:38 Der er 14 kommentarer og
3 løsninger

TOP 10?

Jeg skal ha\' lavet en top 10 på min videodatabase. Den skal laves i asp, og i databasen har jeg angivet en range (antal stjerner) på de forskellige videoer. Skriptet skal udskrive de 10 bedste videoer - altså ordnet efter \"Range\". Hvordan gør jeg? Jeg er i tvivl om min Query-sætning og hvordan jeg standser min loop ved nr. 10. Dette er mit foreløbige script (som ikke virker):

Query = \"SELECT * FROM video WHERE 1=1 ORDER BY Range\"
Set rs = Connect.Execute (Query)
do until rs.EOF %>
<b><%=rs(\"Navn\")%></b><br>
<% rs.MoveNext %>
<% loop %>
<%End If%>
Avatar billede kornfreak Nybegynder
22. november 2001 - 09:40 #1
Query = \"SELECT TOP 10 * FROM video WHERE 1=1 ORDER BY Range\"
Avatar billede canedo Nybegynder
22. november 2001 - 09:40 #2
NB: min åbning til databasen fungerer ellers fint.
Avatar billede kornfreak Nybegynder
22. november 2001 - 09:40 #3
How..hvad vil 1=1 sige!??
Avatar billede canedo Nybegynder
22. november 2001 - 09:43 #4
Jeg har ikke nogen database eller tabel der udelukkende indeholder top 10\'en. Det er meningen at scriptet selv skal vælge de film med flest stjerner, - frem til record nr. 10.
Avatar billede canedo Nybegynder
22. november 2001 - 09:44 #5
Med 1=1 mener jeg bare at den skal tage udgangspunkt i alle records...
Avatar billede kornfreak Nybegynder
22. november 2001 - 09:46 #6
Så virker det jeg skrev da også ?
Avatar billede kornfreak Nybegynder
22. november 2001 - 09:46 #7
Har du et feltnavn der hedder 1?
Avatar billede -mundi- Nybegynder
22. november 2001 - 09:47 #8
jeg ville nok lave den sådan her :

\"SELECT TOP 10 * FROM video ORDER BY Range Desc \" sådan at dem med flest stjerner blev vlagt som de 10
Avatar billede -mundi- Nybegynder
22. november 2001 - 09:48 #9
det der 1=1 er rent resourcespild bare drop det, sql tager altid udgangspunkt i alle records, det er din opgave at sortere ud i dem :-)
Avatar billede canedo Nybegynder
22. november 2001 - 09:54 #10
Hvad betyder SELECT TOP 10?
Hvad betyder Desc?
Avatar billede -sofus- Nybegynder
22. november 2001 - 10:05 #11
\"SELECT TOP 10 * FROM video ORDER BY Range Desc betyder, vælg de 10 med flest stjerner, fjerner du desc vælger du de 10 med færrest stjerner
Avatar billede -mundi- Nybegynder
22. november 2001 - 10:07 #12
Top x vælger de x første records fra queryen desc sorterer faldende 4 3 2 1 og asc (som er standard) sorterer stigende 1 2 3 4
Avatar billede canedo Nybegynder
22. november 2001 - 10:24 #13
men jeg har ikke noget sted defineret noget der hedder TOP 10. Er TOP 10 en SQL-vending?
Avatar billede -mundi- Nybegynder
22. november 2001 - 10:26 #14
yups :-)
Avatar billede canedo Nybegynder
22. november 2001 - 10:34 #15
OKAY. Jeg tester det i aften - og vender så tilbage i morgen :-)
Avatar billede -mundi- Nybegynder
22. november 2001 - 10:36 #16
oki
Avatar billede tmceu Praktikant
22. november 2001 - 10:57 #17
Det forslag du allerede har fået er klart det bedste, ikke mindst i.f.t. performance. Men vær lige opmærksom på at ikke alle databaser understøtter TOP keyword/operatoren. Du har ikke skrevet noget om hvilken database du anvender, så derfor får du lige et alternativt forslag just in case...

Query = \"SELECT * FROM video WHERE 1=1 ORDER BY Range DESC\"
Set rs = Connect.Execute (Query)

i = 0

do until rs.EOF
i = i + 1
if i = 10 then exit do %>
<b><%=rs(\"Navn\")%></b><br>
<% rs.MoveNext %>
<% loop %>
<%End If%>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester