sherlock's forslag basere sig på den gængse måde at lave rankings ... nemlig ved at have en enkelt række for hver eneste ranking en eller anden laver. Det er så ikke den måde du har valgt at gøre det på.
Prøv med:
SELECT *, rating_total/rating_count AS rating_avg FROM dinTabel WHERE rating_count>0 ORDER BY rating_avg DESC
Synes godt om
Slettet bruger
27. oktober 2007 - 14:39#5
Hej nielle, ja - det er noget i den stil, jeg er ude efter...
SELECT * FROM ( SELECT *, rating_total/rating_count AS rating_avg FROM dinTabel WHERE rating_count>0 ) ORDER BY rating_avg DESC
Hvad er det for en format du mangler?
Synes godt om
Slettet bruger
27. oktober 2007 - 15:37#8
Jeg tænkte på noget i stil med:
SQL = "SELECT *, format(rating_total/rating_count) AS rating_avg FROM poster WHERE rating_count > 0 ORDER BY rating_avg DESC;"
Men hvad ved jeg... jeg prøver dit nye bud...
Synes godt om
Slettet bruger
27. oktober 2007 - 15:48#9
Sweet - ser ud til at virke perfekt!
Kan du lige klare en sidste også:
rating = (rating_total/rating_count)
her kan rating eks. blive: "4,1379310344827629" - altså med mange decimaler - findes der ikke en nem løsning til at sige max 1 decimal; altså "4,1"?
(husk at svare for at få pointene)
Mange tak for hjælpen!
Synes godt om
Slettet bruger
27. oktober 2007 - 15:50#10
Nå, den klarede jeg selv:
response.write Round(rating, 2)
2 = antal decimaler man ønsker
Husk at svare! :-)
Synes godt om
Slettet bruger
27. oktober 2007 - 16:01#11
Hmm ja - der var så alligevel lige en ting: jeg ønsker stadig at indlæg der IKKE er blevet ratet (altså rating = 0) bliver vist.
Det sker selvf. ikke med ovenstående sql - problemet er at hvis jeg fjerner "WHERE rating_count>0" fra sql'en kommer flg. fejl:
[Microsoft][ODBC Microsoft Access Driver]Numeric value out of range (null)
Synes godt om
Slettet bruger
27. oktober 2007 - 16:03#12
Jeg forstår godt at man ikke kan dividere med "0" - men kan man ikke komme omkring det så indlæg der ikke er ratet alligevel kommer med ud i sql-trækningen?
SELECT * FROM ( SELECT *, iff(rating_count<>0;rating_total/rating_count;0) AS rating_avg FROM dinTabel ) ORDER BY rating_avg DESC
Synes godt om
Slettet bruger
27. oktober 2007 - 16:42#14
Hmm, desværre - den siger:
[Microsoft][ODBC Microsoft Access Driver] Syntax error in FROM clause.
(SQL: SQL = "SELECT * FROM (SELECT *, if(rating_count<>0;rating_total/rating_count;0) AS rating_avg FROM poster WHERE frasideid = '" & id & "') ORDER BY rating_avg DESC;")
SQL = "SELECT * FROM (SELECT *, if(rating_count<>0,rating_total/rating_count,0) AS rating_avg FROM poster WHERE frasideid = '" & id & "') ORDER BY rating_avg DESC")
Synes godt om
Slettet bruger
27. oktober 2007 - 16:57#16
hmm, næh... med:
SQL = "SELECT * FROM (SELECT *, if(rating_count<>0,rating_total/rating_count,0) AS rating_avg FROM poster WHERE frasideid = '" & id & "') ORDER BY rating_avg DESC"
får jeg:
[Microsoft][ODBC Microsoft Access Driver] Undefined function 'if' in expression.
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.