webForumDet fria alternativet

sorteringsproblem

8 svar · 414 visningar · startad av henkz

henkzMedlem sedan apr. 2002183 inlägg
#1

Vill kunna få fram vilken placering en bild har via medelvärdet.
Någon som har en bättre lösning?

Nuvarande fungerade kod utan placering:

SQL = "SELECT id, file, rubrik, bredd, hojd, votesnitt, votetotal FROM bilder WHERE userid='"&session("userid")&"' order by presspic desc, indag"

Ej fungerande test:

SQL = "SELECT id, file, rubrik, bredd, hojd, votesnitt, votetotal, (SELECT COUNT(*) FROM bilder t2 WHERE t2.votesnitt > t1.votesnitt) AS num_rows_greater FROM bilder t1 WHERE userid='"&session("userid")&"' order by presspic desc, indag"
LarsGMedlem sedan dec. 200012 464 inlägg
#2

På vilket sätt fungerar det inte?

Om du har så där långa rader så kan du gärna dela upp dem så att det blir läsbart.

henkzMedlem sedan apr. 2002183 inlägg
#3

det ger felmeddelandet:
Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.23-nt]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT COUNT(*) FROM bilder t2 WHERE t2.votesnitt > t1.votesnit

Kan det bero på att jag har typen decimal(10,2) i mysql för "votesnitt" ?

@ndersMedlem sedan juni 200032 969 inlägg
#4

Nej, det beror på att du har en gammal version av MySQL, som inte stödjer subqueries. Uppgradera?

henkzMedlem sedan apr. 2002183 inlägg
#5

räcker det med version 4.1x eller måste jag installera v5.x?

@ndersMedlem sedan juni 200032 969 inlägg
#6

4.1 räcker för att få stöd för subqueries.

Mvh

henkzMedlem sedan apr. 2002183 inlägg
#7

Nu har jag äntligen fått tid att uppgradera till v4.1
Sql strängen ovan fungerade direkt men när jag skulle göra nästa gick det sämre. Koden nedan ger felet:

Microsoft OLE DB Provider for ODBC Drivers fel '80040e31'
[MySQL][ODBC 3.51 Driver][mysqld-4.1.14-nt]Unknown table 'bilder' in field list

SQL = "SELECT bilder.id, bilder.file, bilder.bredd, bilder.hojd, bilder.votesnitt,
member.id, member.username, member.kon, member.age,(SELECT COUNT(*)
 FROM bilder t2 WHERE t2.votesnitt > t1.votesnitt) AS num_rows_greater 
FROM bilder t1 INNER JOIN member ON member.id = bilder.userid WHERE 
bilder.id='"&pid&"' LIMIT 1"
LarsGMedlem sedan dec. 200012 464 inlägg
#8

Eftersom du har gett tabellen bilder ett korrelationsnamn så måste du använda det namnet och inte det ursprungliga tabellnamnet.

henkzMedlem sedan apr. 2002183 inlägg
#9

ja givetvis :)

Nu funkar det fint!
Tack!

130 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)