Avatar billede plexx Nybegynder
07. juli 2003 - 00:43 Der er 13 kommentarer og
1 løsning

ORDER BY i asp

Jeg har lavet et script som henter nogle oplysninger i en database. For hver post i en database beregnes et gennemsnit ud fra dataen i posten.

jeg kan også sagtens få udskrevet dette gennemsnit på skærmen men jeg vil gerne have at posterne bliver sorteret med det største gennemsnit øverst.

Er der nogle der kan hjælpe mig, for jeg aner ikke hvordan jeg skal gøre det?
Avatar billede medions Nybegynder
07. juli 2003 - 00:46 #1
Surething... Prøv at post din SQL sætning her!

//>Rune
Avatar billede tchami Nybegynder
07. juli 2003 - 00:46 #2
Nu har du ikke postet din kode, men hvis du henter dataen fra databasen ud vha. en SQL-streng skal du bare tilføje ORDER BY navn-på-gennemsnitsrækken-i-databasen DESC til sidst i SQL-strengen, eks.:

strSQL = "SELECT * FROM tabelnavn ORDER BY gennemsnit DESC"
Avatar billede plexx Nybegynder
07. juli 2003 - 00:48 #3
Jeg kan ikke bruge ORDER BY i selve SQL sætningen da gennemsnittet ikke er beregnet på det tidspunkt!
Avatar billede medions Nybegynder
07. juli 2003 - 00:49 #4
Hallooo prøv nu at lad mig se din kode, så kan det jo være vi kan finde en løsning!

Det hjælper jo ligsom ikke jeg skal sidde og gætte mig frem til hvad din kode er vel? ;o)

//>Rune
Avatar billede plexx Nybegynder
07. juli 2003 - 00:49 #5
Altså jeg henter nogle data fra en database som jeg derefter beregner et gennemsnit af...Så derfor kan jeg ikke bare tilføje ORDER BY i SQL sætningen.
Avatar billede plexx Nybegynder
07. juli 2003 - 00:51 #6
SQLstring="SELECT * from votes WHERE siteid ="& rssites("siteid") &";"
SET rsvotes=dbladder.Execute(SQLstring)

Do until rsvotes.EOF
votes = votes + 1
calrating = calrating + rsvotes("vote")
rsvotes.MoveNext
Loop
rsvotes.Close

if votes > 0 then
rating = FormatNumber(round(calrating / votes,2),2)
end if

if votes = "" then
votes = "0"
end if
Avatar billede tchami Nybegynder
07. juli 2003 - 00:51 #7
Og hvordan ser de data så ud? Det er rimelig svært at hjælpe dig når du stort set ingen info giver..
Avatar billede medions Nybegynder
07. juli 2003 - 00:53 #8
Du kan jo gøre sådan her:

SQLstring="SELECT AVG(vote) AS gennemsnit, * from votes WHERE siteid ="& rssites("siteid") &" ORDER BY vote;"
SET rsvotes=dbladder.Execute(SQLstring)

While Not rsvotes.EOF
  Response.Write(rsvotes("gennemsnit") & "<br>")
rsvotes.MoveNext()
Wend

//>Rune
Avatar billede plexx Nybegynder
07. juli 2003 - 00:55 #9
hvad gør funktionen AVG() ?
Avatar billede medions Nybegynder
07. juli 2003 - 00:58 #10
finder gennemsnittet :o)
AVG() står for Average som betyder Gennemsnit på dansk ;o)

//>Rune
Avatar billede plexx Nybegynder
07. juli 2003 - 01:03 #11
hmmm nej det kan ikke bruges!
Avatar billede plexx Nybegynder
07. juli 2003 - 01:05 #12
i får lige hele kode 2 sek...
Avatar billede plexx Nybegynder
07. juli 2003 - 01:07 #13
<%
Set dbladder = Server.CreateObject("ADODB.Connection")
dbladder.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ=" & ("xxx")

SQLstring="SELECT TOP 10 * from sites ORDER BY siteid DESC"
SET rssites=dbladder.Execute(SQLstring)
%>
<html>

<head>
</head>

<body bgcolor="#FFFFFF" text="#000000" link="#000000" vlink="#000000" alink="#000000" topmargin="0" leftmargin="0">
<br>
<div align="center">
  <center>
  <table border="0" cellpadding="2" cellspacing="0" width="600" style="font-family: Arial; font-size: 11 px; border: 1 solid #000000" height="216">
    <tr>
      <td  width="50" align="center" height="16">Nr.</td>
      <td  width="400" height="16">Navn</td>
      <td  width="50" height="16" align="center">Stemmer</td>
      <td  width="50" height="16" align="center">Rating</td>
    </tr>

<%
'---BESTEMMELSE AF VARIABLER.---'
calrating = 0
vote = 0
rating = 0
award = ""

'---KODE FOR HVER SIDE.---'
Do until rssites.EOF

'---AFLÆSNING AF STEMMER FRA DATABASE---'
'SQLstring="SELECT * from votes WHERE siteid ="& rssites("siteid") &";"
SQLstring="SELECT AVG(vote) AS gennemsnit, * from votes WHERE siteid ="& rssites("siteid") &";"
SET rsvotes=dbladder.Execute(SQLstring)

'---KODE FOR HVER STEMME.---'
Do until rsvotes.EOF
votes = votes + 1
calrating = calrating + rsvotes("vote")
rsvotes.MoveNext
Loop
rsvotes.Close

if votes > 0 then
rating = FormatNumber(round(calrating / votes,2),2)
end if

if votes = "" then
votes = "0"
end if
%>
    <tr>
      <td  width="50" align="center" height="12">x</td>
      <td  width="400" height="12"><%=rssites("name")%></td>
      <td  width="50" height="12" align="center"><%=votes%></td>
      <td  width="50" height="12" align="right"><%=rating%></td>
    </tr>

<%
votes = 0
calrating = 0
award = ""
rssites.MoveNext
Loop
rssites.Close
dbladder.Close
%>

    </table>
  </center>
</div>
</body>

</html>
Avatar billede plexx Nybegynder
07. juli 2003 - 12:07 #14
Lukker da jeg ikke har fået noget svar jeg kan bruge.
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