Ho cercato nel forum per trovare la soluzione per il mio problema. Il mio problema è che non riesco a scoprire come salvare una posizione in classifica di ogni torneo che si svolge. Ho creato due tabelle e una query simile a questa: concorrenti (cid int auto_increment chiave primaria, nome varchar (25), lastname varchar (25)); comps (compid int auto_increment chiave primaria, tournement int, cid int, punti int);Memorizzazione della posizione di rango da mysql
select @rowno:= @rowno+1 as position, rank.*
from (
select name,lastname,SUM(points) as pts,group_concat(points) as round FROM
(select cid,tournament,points from comps
group by cid,tournament order by points)total
join competitors c on c.cid = total.cid
cross join (select @rowno := 0) r
group by total.cid
order by pts desc) rank
order by pts desc
Ecco SQLFiddle demo
La cosa che voglio ottenere è che quando un utente ha fatto clic su un concorrente profilo le posizioni sono indicati per ogni torneo come questo:
Name: Competitor One
Tournament 1: 1st 100 pts
Tournament 2: 2nd 80 pts
Tournament 3: 10th 30 pts
ho raggruppato i punti ma non ho idea di come farlo con le posizioni. E 'possibile da questa query o devo creare una nuova tabella come posizioni (pid int auto_increment chiave primaria, torneo int, cid int, posizione int) dove inserisco ogni posizione per ogni concorrente.
Speriamo che qualcuno capisce il mio problema e mi potrebbe dare alcuni suggerimenti o soluzioni a questo problema
non sono quelli ordinati? Una posizione è la quantità di punti no? –
I punti sono ordinati correttamente da group_concat, ma voglio memorizzare la posizione allo stesso modo dalla variabile @rowno. Spero che abbia senso che posizione e punti siano insieme. – Headpetrol
Bene, scusa, ma se la posizione è data da punti, non vedo utile aggiungere un altro campo per la posizione. Comunque puoi aggiungere un campo chiamato position e poi fare ciò che vuoi –