Tôi đã tìm kiếm diễn đàn để tìm giải pháp cho vấn đề của mình. Vấn đề của tôi là tôi không thể tìm ra cách để lưu một vị trí xếp hạng của mỗi giải đấu được tổ chức. Tôi đã tạo hai bảng và một truy vấn trông như thế này: đối thủ cạnh tranh (cid int auto_increment khóa chính, tên varchar (25), lastname varchar (25)); comps (comp int int auto_increment khóa chính, int tournement, cid int, int điểm);Lưu trữ vị trí xếp hạng từ 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
Đây là SQLFiddle demo
Điều tôi muốn đạt được là khi người dùng đã nhấp vào một đối thủ cạnh tranh hồ sơ các vị trí được hiển thị cho mỗi giải đấu như thế này:
Name: Competitor One
Tournament 1: 1st 100 pts
Tournament 2: 2nd 80 pts
Tournament 3: 10th 30 pts
Tôi có nhóm các điểm nhưng tôi không có đầu mối làm thế nào để làm điều đó với các vị trí. Điều này có thể từ truy vấn này hay tôi phải tạo một bảng mới như các vị trí (pid int auto_increment khóa chính, int giải đấu, cid int, int vị trí), nơi tôi chèn từng vị trí cho từng đối thủ cạnh tranh.
Hy vọng rằng một người nào đó hiểu được vấn đề của tôi và có thể cho tôi một số gợi ý hay giải pháp cho vấn đề này
Không phải những lệnh? Vị trí là số điểm không? –
Các điểm được sắp xếp đúng theo group_concat, nhưng tôi muốn lưu trữ vị trí theo cùng một cách từ biến @rowno. Tôi hy vọng nó có ý nghĩa nên vị trí và các điểm cùng nhau. – Headpetrol
Vâng, xin lỗi, nhưng nếu vị trí được cho bởi các điểm tôi không thấy hữu ích để thêm một trường khác cho vị trí. Tuy nhiên bạn có thể thêm một lĩnh vực được gọi là vị trí và sau đó làm những gì bạn muốn –