Ich habe das Forum nach der Lösung für mein Problem gesucht. Mein Problem ist, dass ich nicht herausfinden kann, wie man eine Rangliste jedes Turniers speichert, das gehalten wird. Ich habe zwei Tabellen und eine Abfrage erstellt, die wie folgt aussehen: Konkurrenten (cid int auto_increment Primärschlüssel, Name varchar (25), Nachname varchar (25)); comps (compid int auto_increment Primärschlüssel, Turnier int, cid int, Punkte int);Speichern Rangposition von 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
Hier ist SQLFiddle demo
Das, was ich erreichen möchte, ist, dass, wenn ein Benutzer auf einem Wettbewerber Profil geklickt hat die Positionen für jedes Turnier wie folgt dargestellt:
Name: Competitor One
Tournament 1: 1st 100 pts
Tournament 2: 2nd 80 pts
Tournament 3: 10th 30 pts
Ich habe gruppierte die Punkte, aber ich habe keine Ahnung, wie man das mit Positionen macht. Ist das möglich von dieser Abfrage oder muss ich eine neue Tabelle wie Positionen erstellen (pid int auto_increment Primärschlüssel, Turnier int, cid int, Position int), wo ich jede Position für jeden Wettbewerber einfügen.
Hoffentlich versteht jemand mein Problem und konnte mir ein paar Tipps oder Lösungen für dieses Problem
bestellt nicht die? Eine Position ist die Menge der Punkte nein? –
Die Punkte werden von group_concat korrekt sortiert, aber ich möchte die Position auf die gleiche Weise von der Variable @rowno speichern. Ich hoffe es macht Sinn, also sind Position und Punkte zusammen. – Headpetrol
Nun, tut mir leid, aber wenn die Position durch Punkte gegeben ist, sehe ich nicht sinnvoll, ein weiteres Feld für die Position hinzuzufügen. Sie können jedoch ein Feld namens position hinzufügen und dann tun, was Sie wollen –