webForumDet fria alternativet

sortering

12 svar · 151 visningar · startad av Wiberg

WibergMedlem sedan juni 20002 540 inlägg
#1

Jag har en sida där besökarna kan betygsätta olika saker från 1 till 10 och sen ska allt listas med det som har högst betyg först.

Som det är nu så sparas summan av alla röster i ett fält och antalet röster i ett annat. Sen får jag fram snittbetyget genom att dividera summan med antalet röster.

Men hur gör jag för att sedan kunna skriva ut allt med hänsyn till detta?

ORDER by... alltså. :q

------------------
Mvh. Wiberg

LarsGMedlem sedan dec. 200012 465 inlägg
#2
select sumpoints,voters,(sumpoints+0.0)/(votes + 0.0) as average from t
order by 3 desc

red: sql-forumet alltså
------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 29 sep 2001]

WibergMedlem sedan juni 20002 540 inlägg
#3

Ja, det blev visst fel forum...

 SQL = "select titel, url, röster_antal, röster_summa, tid,(röster_summa+0.0)/(röster_antal + 0.0) as average from länkar order by 3 desc"

Item cannot be found in the collection corresponding to the requested name or ordinal

:q

------------------
Mvh. Wiberg

LarsGMedlem sedan dec. 200012 465 inlägg
#4

Order by 3 innebär att man sorterar på 3:e kolumnen i selectlistan. I ditt fall så borde det alltså bli

order by 5

Felet som du får beror på att du anger ett namn som inte finns i ett recordset. För att t.ex. få ut snittet så skriver du

rs("average")

Lite svårt att säga exakt vad som är fel utan att se koden runtomkring.

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

WibergMedlem sedan juni 20002 540 inlägg
#5

Borde det inte bli order by 6 då? 5:an är ju tiden när länken lades in. Jag vill använda värdet jag får i divisionen till att använda som order by...

------------------
Mvh. Wiberg

LarsGMedlem sedan dec. 200012 465 inlägg
#6

Det stämmer, jag räknade fel där. Hur gick det med det andra då.

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

WibergMedlem sedan juni 20002 540 inlägg
#7

[Microsoft][ODBC Microsoft Access Driver]Numeric value out of range (null)

------------------
Mvh. Wiberg

LarsGMedlem sedan dec. 200012 465 inlägg
#8

Ok, du har alltså poster där röster_summa och/eller röster_antal inte är definerat.

Det kanske är bäst att välja bort dessa rader helt och hållet från resultatet

SQL = "select titel, url, röster_antal, röster_summa, tid,(röster_summa+0.0)/(röster_antal + 0.0) as average from länkar where röster_summa is not null and röster_antal is not null and röster_antal > 0 order by 6 desc"

Jag lade även till ett villkor så att man inte får poster med 0 röster vilket annars skulle ge upphov till division med noll.

red: sex skulle det vara

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

[Redigerat av LarsG den 29 sep 2001]

WibergMedlem sedan juni 20002 540 inlägg
#9

Item cannot be found in the collection corresponding to the requested name or ordinal.

Begriper inte vad som är fel. Det verkar ju stämma...

------------------
Mvh. Wiberg

WibergMedlem sedan juni 20002 540 inlägg
#10

Sorry. Det felmeddelandet berodde på att försökte hämta rs("id") fast det inte var med i SQL-uttrycket. :)

------------------
Mvh. Wiberg

WibergMedlem sedan juni 20002 540 inlägg
#11

Men det blir fortfarande inte riktigt rätt. :l

Jag vill ju till att börja med att även de som inte har blivit betygsatta än också ska skrivas ut fast då alltså komma sist på listan.

Order by blir för övrigt helt fel. Först kommer en med snittbetyget 4 som sedan följs av 1, 1, 7 etc...

------------------
Mvh. Wiberg

LarsGMedlem sedan dec. 200012 465 inlägg
#12

Okej, jag ser att du har Access så då går det att använda några specifika Access-funktioner

SQL = "select titel, url, röster_antal, röster_summa, tid,iif(röster_summa is null or röster_antal is null or röster_antal = 0,cdbl(0.0),cdbl(röster_summa)/cdbl(röster_antal)) as average
from länkar order by 6 desc"

Tanken är att de sidor som inte har några röster får snittet 0 och dessa borde då hamna sist i sorteringsordningen.

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

WibergMedlem sedan juni 20002 540 inlägg
#13

Nu funkar det perfekt så det är väl bara att tacka och buga för din effektiva support! :D

Det här med sorteringen funkar visst innan också. Problemet var att när jag la till id i SQL-uttrycket så glömde jag ändra 6 till 7. :)

------------------
Mvh. Wiberg

123 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
121 ms — hämta tråd, inlägg och bilagor (db)