17. februar 2003 - 23:10Der er
22 kommentarer og 1 løsning
Select top 5
Hejsa!!
Jeg har et lille problem! Jeg har lavet en afstemning: Se her: <% Set RS_jokes_point = Server.CreateObject("ADODB.RecordSet") RS_jokes_point.open "Select * From [Jokes_points] WHERE joke_id = " & RS_jokes("id") &"" , Conn, 1, 3 Set RS_jokes_pointsum = Server.CreateObject("ADODB.RecordSet")
RS_jokes_pointsum.open "SELECT sum(points) as antal From [Jokes_points] WHERE joke_id = " & RS_jokes("id") &"" , Conn, 1, 3 if not RS_jokes_pointsum.eof then %> <% if RS_jokes_pointsum("antal") <> "" Then %> <% resultat = RS_jokes_pointsum("antal") / RS_jokes_point.recordcount %> Brugernes bedømmelse:<br> <Img src="img/<% response.write(Round(resultat)) %>.jpg">
Nu vil jeg gerne på min forside liste de 5 mest populære!
Den skal altså tælle alle posternes point sammen og så sortere dem efter flest point..
<% Set RS_jokes_point = Server.CreateObject("ADODB.RecordSet") RS_jokes_point.open "Select * From [Jokes_points] WHERE joke_id = " & RS_jokes("id") &"" , Conn, 1, 3 Set RS_jokes_pointsum = Server.CreateObject("ADODB.RecordSet")
RS_jokes_pointsum.open "SELECT TOP 5 *, sum(points) as antal From [Jokes_points] WHERE joke_id = " & RS_jokes("id") &"" , Conn, 1, 3 if not RS_jokes_pointsum.eof then %> <% if RS_jokes_pointsum("antal") <> "" Then %> <% resultat = RS_jokes_pointsum("antal") / RS_jokes_point.recordcount %> Brugernes bedømmelse:<br> <Img src="img/<% response.write(Round(resultat)) %>.jpg">
Der er en tabel der hedder [jokes] så er der en der hedder [jokes_points], jeg skal bare hente de fem mest populære jokes fra [jokes] der har flest points i [jokes_points] - Det er til Access
Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.
der mangler et par mellemrum, et før FROM og et før ORDER BY så prøv:
SQL = "SELECT TOP 5 jokes.titel, Sum(Jokes_points.points) AS antal" SQL = SQL & " FROM Jokes_points LEFT JOIN jokes ON Jokes_points.joke_id = jokes.id " SQL = SQL & " GROUP BY Jokes_points.joke_id, jokes.titel" SQL = SQL & " ORDER BY Sum(Jokes_points.points) DESC;"
SQL = "SELECT TOP 5 jokes.titel, jokes.joke_id, Sum(Jokes_points.points) AS antal" SQL = SQL & " FROM Jokes_points LEFT JOIN jokes ON Jokes_points.joke_id = jokes.id " SQL = SQL & " GROUP BY Jokes_points.joke_id, jokes.titel" SQL = SQL & " ORDER BY Sum(Jokes_points.points) DESC;"
SQL = "SELECT TOP 5 jokes.titel, jokes.id, Sum(Jokes_points.points) AS antal" SQL = SQL & " FROM Jokes_points LEFT JOIN jokes ON Jokes_points.joke_id = jokes.id " SQL = SQL & " GROUP BY Jokes_points.joke_id, jokes.titel, jokes.id" SQL = SQL & " ORDER BY Sum(Jokes_points.points) DESC;"
Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the specified expression 'Id' as part of an aggregate function.
Tak - Den tæller dog ikke helt optimalt.. http://jokes.zantiago.com - Se under top 5 - prøv at trykke på den enkelte vittighed, og se karakteren i bunden
Er det fordi den tæller hvor mange gange den fremkommer i jokes_points? Hver joke for en karakter i mellem 1 - 6.. Så den skulle gerne tælle alle pointsene sammen, derefter dividere med antallet gange den er fremkommet, og så går videre til næste for at til sidst finde de 5 med det største gennemsnit..
Arh det er gennemsnitte du vil havde? Så udskift Sum med Avg i SQL sætningen:
SQL = "SELECT TOP 5 jokes.titel, jokes.id, Avg(Jokes_points.points) AS antal" SQL = SQL & " FROM Jokes_points LEFT JOIN jokes ON Jokes_points.joke_id = jokes.id " SQL = SQL & " GROUP BY Jokes_points.joke_id, jokes.titel, jokes.id" SQL = SQL & " ORDER BY Avg(Jokes_points.points) DESC;"
He he - Så forstyrer jeg heller ikke mere.. Gaabb ZzZzZz Tak for hjælpen
Synes godt om
Ny brugerNybegynder
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.