/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MySQL: Sortering efter "dynamiske" points?
Fra : Kasper Johansen


Dato : 31-10-04 11:58

Hej gruppe.

Jeg er ved at lave en chart. Brugerne har en mulighed for at danne deres
egen top3 af de elementer der er.

Jeg vil så vise de elementer som har fået flest stemmer.

Eftersom at det er en top3 kan man lave et points-system så den der ligger
nr. 1 får 3 points, den der ligger nr. 2 får 2 points og nummer 3 får 1
point.

Ideen er så at tælle disse points sammen for til sidst at sortere ud fra
det.

Jeg arbejder med PHP og MySQL (plejer at være opdateret med den nyeste
version). Jeg har (mere eller mindre) fået det til at virke med PHP, men det
er med flere forespørgsler og lignende, så det bliver lidt tungt. Er der
mulighed for at tælle points sammen og sortere ud fra disse direkte ved
hjælp af MySQL og så bare skrive resultatet ud med PHP?

Jeg har to tabeller hvor der i den ene er stemmer (med element-id og
pladsnummer (1, 2 eller 3)) og i den anden er elementer (med en titel og et
id).

Jeg syntes ikke at kunne forstille mig hvordan en sådan forespørgsel skal se
ud, så hjælp!?

Mvh
Kasper Johansen



 
 
Troels Arvin (31-10-2004)
Kommentar
Fra : Troels Arvin


Dato : 31-10-04 12:58

On Sun, 31 Oct 2004 11:57:51 +0100, Kasper Johansen wrote:

> Jeg har to tabeller hvor der i den ene er stemmer (med element-id og
> pladsnummer (1, 2 eller 3)) og i den anden er elementer (med en titel og et
> id).

SELECT element-id,count(pladsnummer) AS res
FROM stemmer
GROUP BY element_id
ORDER BY res DESC
LIMIT 3;

Du bør overveje, hvad du vil gøre, hvis trediepladsen i virkeligheden er
delt. Ang. dette, se: http://troels.arvin.dk/db/rdbms/#select-top-n-mysql
(Efter at MySQL 4.1 er gået "gold", er det endelig blevet muligt at
foretage et top-n query i MySQL med bare nogenlunde acceptabel køretider.)

--
Greetings from Troels Arvin, Copenhagen, Denmark


Kasper Johansen (31-10-2004)
Kommentar
Fra : Kasper Johansen


Dato : 31-10-04 17:36

"Troels Arvin" <troels@arvin.dk> skrev i en meddelelse
news:pan.2004.10.31.11.57.50.5317@arvin.dk...
> On Sun, 31 Oct 2004 11:57:51 +0100, Kasper Johansen wrote:
> SELECT element-id,count(pladsnummer) AS res
> FROM stemmer
> GROUP BY element_id
> ORDER BY res DESC
> LIMIT 3;

I en sådan forespørgsel vil "res" jo blive antal stemmer. Det forklarer jo
kun det antal stemmer det har fået og ikke hvadfor en plads det ligger på.

Mvh
Kasper



Troels Arvin (31-10-2004)
Kommentar
Fra : Troels Arvin


Dato : 31-10-04 19:26

On Sun, 31 Oct 2004 17:35:59 +0100, Kasper Johansen wrote:

> I en sådan forespørgsel vil "res" jo blive antal stemmer. Det forklarer jo
> kun det antal stemmer det har fået og ikke hvadfor en plads det ligger på.

Du har alt, hvad du skal bruge for at præsentere det for brugeren:
Eftersom der sorteres efter placering, vil første række i dit
resultasæt være førstepladsen, anden række vil være andenpladsen, osv.

Eneste problem er, om forespørgslen på en eller anden måde skal tage
hånd om en delt sidsteplads blandt de tre. Og til det gav jeg dig et
link.

Ellers - hvis du vil have placeringsnummeret med - må du fedte med
http://dev.mysql.com/doc/mysql/en/Dynamic_System_Variables.html (se fx.
nederst på siden). - Men det vil være redundant, jvf. ovenfor.

--
Greetings from Troels Arvin, Copenhagen, Denmark


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste