webForumDet fria alternativet

krångligt att lägga in i databasen

ASP

11 svar · 257 visningar · startad av eriks

Medlem sedan apr. 20011 418 inlägg
Frågan#1

Hej! Jag har ett problem när jag ska föra in data i min databas. Jag vill föra in ett antal resultat (går bra), men jag skulle även vilja föra in en sorts "rankingpoäng" (i en annan kolumn). Jag menar att det som hade bäst resultat får t.ex. 20 poäng, tvåan får 15 och trean får 10. Måste jag uppdatera dessa poäng med en SQL för sig efteråt typ:

"UPDATE Resultat SET Poang=10 WHERE ?Hur man nu skriver för att få den som har bäst/nästbäst osv resultat?"

I så fall får jag ju en SQL-sats för varje person jag ska dela ut poäng till. Det måste finnas något smidigare sätt.

En fråga till: Hur skriver man så som jag försökte där uppe, jag menar " UPDATE SEL Poang=10 WHERE ?Resultatet är det näst högsta i kolumnen?"

Någon som kan?
Tack! /Erik

Medlem sedan apr. 20011 418 inlägg
#2

ingen som kan???

Medlem sedan dec. 19996 721 inlägg
#3

Detta är knepigt, och låter sig inet så smidigt göras med SQL, särskilt inte i Access. Hur ser tabellen ut?

Medlem sedan juni 20019 024 inlägg
#4

En lösning vore att ta ut alla värden ur databasen och skapa en funktion som skapar topp-listan och ger ettan 20 poäng, tvåan får 15 osv och därefter mata in värdena igen i databasen.

------------------
Peter D

Medlem sedan apr. 20011 418 inlägg
#5

emission, vad menar du med hur tabellen ser ut. Det är en valig tabell, med kolumnerna UserID, Resultat och Poang.

pace, hur menar du att en sådan funktion skulle se ut. Det låter som en möjlig lösning.

Tack! /Erik

Medlem sedan juni 20019 024 inlägg
#6

Håller på och snickar på en sådan lösning... ungefär så här kan det gå till:

1. Värdena (userid, resultat & poäng) läses ur databasen.
2. Värdena sorteras efter poäng, dvs en topplista skapas.
3. Ettan får 20 poäng.
4. Tvåan >> 15 poäng.
5. Trean >> 10 poäng.
6. Sortera värdena igen efter antal poäng.

Något sådant borde fungera, om jag har förstått dig rätt.

------------------
Peter D

Medlem sedan apr. 20011 418 inlägg
#7

låter bra, pace...

men borde det inte vara "Värdena sorteras efter -->resultat(inte poäng), dvs en topplista skapas." De ska ju få poäng efter vilket resultat de har haft.

/Erik

Medlem sedan dec. 200012 464 inlägg
#8

Varför behöver du lägga in det i databasen? Kan du inte räkna ut det nöär du visar data? Om du sorterar posterna med avseende på fallande resultat, så är det enkelt att skriva bonuspoängen.

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

Medlem sedan juni 20019 024 inlägg
#9

men borde det inte vara "Värdena sorteras efter -->resultat(inte poäng), dvs en topplista skapas.

Nej, den som har mest poäng leder ju resultatlistan (om du räknar totala poäng dvs).

De ska ju få poäng efter vilket resultat de har haft.

Först sorterar man den aktuella poängen som läses ur databasen.
Låt säga att följande personer har följande poäng:

1. Adam 20 p
2. Bertil 15 p
3. Ceasar 10 p

Låt säga att dessa personer har fått ytterligare poäng efter resultat i en tävling (Ceasar 15, Bertil 10 och Adam fick nada!). Då kan vi inte börja räkna efter deras resultat, utan deras sammanlagda poäng.

summa:
1. Ceasar 35 p
2. Adam 30 p
3. Bertil 20 p

När vi väl har lagt ihop de gamla poängen med de nya så kan vi räkna ut resultatlistan. Det gäller att göra det så enkelt för sig som möjligt!

Sådant här är inte lätt att hålla reda på... knappt att jag gör det. ;)

------------------
Peter D

Medlem sedan juli 20003 825 inlägg
#10

Jag tror du måste tänka om lite. Är du helt säker på att du bara vill veta id, namn och poäng!? Av dina inlägg att dömma låter det som olika deltävlignar, vore det inte trevligt att kunna summera nån slags resumé listad efter olika tävlingar?

Sen vill du ju inte skriva över det gamla värdet, du vill ju att det ska vara ett nytt värde efter en ny tävling, alltså ska du ha speciell koll på poängen. Så här hade jag nog gjort: (snabbt i huvudet utan massa tänka och massa bonus features)

[tavling]
x_ID
x_date

[scores]
x_ID
x_tavlingID
x_userID
x_scores

[users]
x_ID
x_name

Alltså, starta med att registrera en tävling. Du har ett namn och ett datum. Du listar alla deltagarna och fyller i deras respektive poäng. Poängen sparar du i scores efter vilken tävling och vilken user (deltagare) som åsyftas.

Du kan lätt räkna ut totala poängen för en deltagare, SELECT * FROM [scores] WHERE [x_userID] = request("ID").

---
Jag tänker mig en drop-down meny där man väljer poäng själv. Alltså kan två personer i teorin få samma poäng. Sen är det rätt bra om man bara kan ge en person ett poäng... alltså om man kan klura ut en lösning att dom som redan fått poäng hanteras på ett viss sätt mot dom som ännu inte har fått något...

---
are you with!?

------------------
OLR WebAdmin

Medlem sedan apr. 20011 418 inlägg
#11

eclipse, min databas ser faktiskt ut precis som du visade, jag var nog lite stressad när jag skrev det förra inlägget.

larsG, du skriver att det är enkelt att skriva ut poängen, om man hämtar resultaten ur databasen. Hur skulle en sådan lösning se ut? Eclipse hade rätt i sitt antagande om att det handlar om ett antal olika deltävlingar och att man sedan ska kunna se en totalpoäng typ "topplista", är det inte enklare om jag lägger in poängen i databasen då?

Jag vet hur jag ska kunna räkna ut totalpoäng när jag väl har dem i databasen, problemet är hur jag ska få in dem i databasen. Har någon en konkret och enkel lösning på detta?

Medlem sedan apr. 20011 418 inlägg
#12

det kanske helt enkelt inte går att lösa på ett enkelt sätt?

260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)