Przeszukałem forum, szukając rozwiązania dla mojego problemu. Mój problem: jest to, że nie mogę się dowiedzieć, jak zapisać pozycję w rankingu każdego turnieju , który ma miejsce. Stworzyłem dwie tabele i zapytanie, które wygląda następująco: konkurenci (cid int auto_increment primary key, nazwa varchar (25), nazwisko varchar (25)); comps (compid int auto_increment primary key, tournement int, cid int, points int);Przechowywanie pozycji rangi z 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
Oto SQLFiddle demo
To, co chcemy osiągnąć jest to, że gdy użytkownik kliknie na konkurenta profil pozycje są pokazane na każdym turnieju jak ten:
Name: Competitor One
Tournament 1: 1st 100 pts
Tournament 2: 2nd 80 pts
Tournament 3: 10th 30 pts
mam zgrupowane punkty, ale nie mam pojęcia, jak to zrobić z pozycji. Czy jest to możliwe z tego zapytania lub czy muszę utworzyć nową tabelę, taką jak pozycje (pid int auto_increment primary key, turniej int, cid int, position int), w której wstawiam każdą pozycję dla każdego konkurenta.
Mam nadzieję, że ktoś rozumie mój problem i może mi dać jakieś wskazówki lub rozwiązania tego problemu
Czy nie te zamawiać? Pozycja to liczba punktów nr? –
Punkty są uporządkowane poprawnie według group_concat, ale chcę zapisać pozycję w ten sam sposób ze zmiennej @rowno. Mam nadzieję, że to ma sens, więc pozycja i punkty są razem. – Headpetrol
Cóż, przykro mi, ale jeśli pozycja jest podana przez punkty, nie widzę potrzeby dodawania kolejnego pola dla pozycji. Możesz jednak dodać pole o nazwie position, a następnie zrobić to, co chcesz –