webForumDet fria alternativet

Optimera och räkna ut placering?

ASP

19 svar · 589 visningar · startad av Bosse168

Medlem sedan nov. 20031 018 inlägg
Frågan#1

Någon som har något förslag på hur man kan optimera denna kod och samtidigt räkna ut vilken plats som man ligger?
Dvs. när man jämför kolumnen "snygg_snitt" jämfört med alla andra medlemmar.

Set RecSet = Connect.Execute("Select bild,snygg_poang,snygg_roster From members Where username = '"& Replace(who,"'","''") &"' LIMIT 1")

Dim bild, rost, poang, roster, totalt, snittet
bild = RecSet("bild")
rost = Request.form("poang")
poang = Int(RecSet("snygg_poang"))
roster = Int(RecSet("snygg_roster"))
totalt = poang/roster
snittet = Left(totalt,3)

Connect.Execute ("update members set snygg_snitt='"& totalt &"' Where username = '"& Replace(who,"'","''") &"' LIMIT 1"),,128
Medlem sedan sep. 2003301 inlägg
#2

Hmmm...

Luktar variant av Snyggast.se

Medlem sedan nov. 20031 018 inlägg
#3

Ja fast på tattoo's.
Glömde säga att jag använder en MySQL databas.

Medlem sedan sep. 2003301 inlägg
#4

Tror att du får bygga dig en snurra som räknar igen om placeringar så har i alla fall jag lös det tidigare, byggde en sajt om lådbilar för några år sedan... Har dessvärre inte koden kvar för den...

Medlem sedan nov. 20031 018 inlägg
#5

Ok hur räknar jag ut vilken plats den ligger på smidigast?

Medlem sedan nov. 20031 018 inlägg
#6

Varför blir det inga decimaler när jag använder denna SQL-satsen:

Connect.Execute ("update members set snygg_snitt=snygg_poang/snygg_roster Where username = '"& Replace(who,"'","''") &"' LIMIT 1")
Medlem sedan sep. 2003301 inlägg
#7

Vad har du för datatyper i dina fält ?

Tanke ang plaseringslista... Kan dock vara lite moissvisande men det går säkert att lösa...

Ta fram personen du vill ha fram platsen på. Kolla poängen och ta fram en COUNT på antalet poster där snygg_snitt är => än ditt offer... På så vis har du fram antalet poster som har bättre poäng eller lika många poäng som ditt "offer"...

Kommentar ang din db... Lagra ALDRIG värden i en databas som du kan räkna ut av beffintlig data i databasen... Det minskar risken för felaktigdata...

Medlem sedan nov. 20031 018 inlägg
#8

datatyperna snygg_snitt, snygg_poang, snygg_roster är:
Int(11)

Löste själva COUNT delen men när jag använder SQL-satsen från mitt förra inlägg så blir det inga decimaler.

Medlem sedan sep. 2003301 inlägg
#9

Hmm är inte Int ett heltal???

Test med Float eller Long , då bör det funka med decimaler oxå...

BTW förklara hur du löste COUNT biten...

Medlem sedan nov. 20031 018 inlägg
#10

Ok

Medlem sedan sep. 2003301 inlägg
#11

Hmm är inte Int ett heltal???

Test med Float eller Long , då bör det funka med decimaler oxå...

BTW förklara hur du löste COUNT biten...

Medlem sedan juni 200032 967 inlägg
#12

OT: Long är också heltal.

Medlem sedan nov. 20031 018 inlägg
#13

Använder jag Flot så får jag detta fel mess:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.20a-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 '5 AND sort = 'arm'' at line 1

/vote.asp, line 49

Rad 49:

Set Rs = Connect.Execute("SELECT COUNT(*) FROM members Where snygg_snitt > " &  snitt & " AND sort = '"& sort &"'")
Medlem sedan juni 200032 967 inlägg
#14

Och som vanligt gäller: skriv ut den färdiga SQL-frågan när du får syntaxfel.

Får man gissa på att det är kommatecken som decimaltecken i SQL-frågan? Det får det inte vara.

Medlem sedan nov. 20031 018 inlägg
#15

SQL-satsen utskriven:
SELECT COUNT(*) FROM members Where snygg_snitt > 5 AND sort = 'arm'

Medlem sedan nov. 20031 018 inlägg
#16

Löste det satte ' runt snittet.

Medlem sedan nov. 20031 018 inlägg
#17

Löste själva COUNT delen med dessa två RecSet.
Någon som vet ett smidigare sätt eller åtminstonde få ihop dom till en RecSet?

Set Rs = Connect.execute("SELECT snygg_snitt from members where username='"& Replace(who,"'","''") &"'")
snitt=Rs(0)
Rs.Close : set Rs=nothing

Set Rs = Connect.Execute("SELECT COUNT(*) FROM members Where snygg_snitt > '" &  snitt & "' AND sort = '"& sort &"'")
place=Rs(0)
Rs.Close : set Rs=nothing
Medlem sedan nov. 20031 018 inlägg
#18

Ingen?

Medlem sedan sep. 2003301 inlägg
#19

Ja du kan ju ist nästla in din SELECT fråga i COUNTER frågan... På så vis får du ner den till ett RS...

Men jag vet inte om du kan ha någon form av felhantering då...

Kommer dock inte ihåg hur man gör måste nog leta upp lite gamla böcker... Tur att man städade i källaren i dag då :e

Medlem sedan sep. 2003301 inlägg
#20
SELECT COUNT(*) 
FROM members 
WHERE snygg_snitt > (SELECT snygg_snitt FROM members WHERE members.username='TheUser')
AND sort ='sort';

Vet dock inte om den funkar men det är i alla fall en Nästald SQL sats "en fråga i en fråga"

507 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
139 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
375 ms — ändringar (db)