powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Спроектировать систему рейтингов
12 сообщений из 37, страница 2 из 2
Спроектировать систему рейтингов
    #38304929
alekseyxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой Бобр,

Game User
-- id
--winner
--loser
--date
...
Рейтинг: 0 / 0
Спроектировать систему рейтингов
    #38304941
alekseyxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Случайно отправил.


Злой Бобр,

Game
-- id
--winner
--loser
--date

User
--id
--username
...
Рейтинг: 0 / 0
Спроектировать систему рейтингов
    #38304951
alekseyxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621,

Да, при обновлении и нулевых результатах, честно говоря, не учел вариант. Надо уточнять этот момент.
...
Рейтинг: 0 / 0
Спроектировать систему рейтингов
    #38305014
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Надо уточнять этот момент.

Лучше задачу измените. Сравнение результатов имеет смысл при одинаковых условиях для участников. Если одинаковые условия обеспечить невозможно, первое, о чем думается - количественный ценз. Скажем, результаты считаются для участников с количеством игр, большим заранее заданного. Выбрать это значение можно так, чтобы сравнение не выглядело откровенно высосанным из пальца.
...
Рейтинг: 0 / 0
Спроектировать систему рейтингов
    #38305053
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekseyxxxx,

Game распиши поля, я не телепат.
...
Рейтинг: 0 / 0
Спроектировать систему рейтингов
    #38305065
alekseyxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой Бобр,

Типы полей? Вот вся таблица.

Game
-- id (Integer, pk)
--winner (ForeignKey(user.id))
--loser (ForeignKey(user.id))
--date (DateTime)
...
Рейтинг: 0 / 0
Спроектировать систему рейтингов
    #38305206
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekseyxxxx--winner (ForeignKey(user.id))
--loser (ForeignKey(user.id))
--date (DateTime)
Что именно хранится в этих полях. Понятно что ИД игрока, но какая логика заполнения полей.
...
Рейтинг: 0 / 0
Спроектировать систему рейтингов
    #38305342
alekseyxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой Бобр,

По действию 'окончание игры' с клиента на сервер посылается запрос. В нем айди победителя, и проигравшего. В этот момент в таблицу вставляется запись: winner_id, loser_id, ну и дата
...
Рейтинг: 0 / 0
Спроектировать систему рейтингов
    #38305400
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekseyxxxx,

Ну дык ниче менять и ненужно. Делай селект и выводи нужную инфу. Все данные у тебя уже в таблице есть. Единственное построй индекс что б отбирало быстрее.
...
Рейтинг: 0 / 0
Спроектировать систему рейтингов
    #38305498
alekseyxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой Бобр,
Что значит ничего менять не нужно? Мне надо знать старое место игрока на прошедший час. Т.е. его надо хранить.
...
Рейтинг: 0 / 0
Спроектировать систему рейтингов
    #38305538
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekseyxxxxЗлой Бобр,
Что значит ничего менять не нужно? Мне надо знать старое место игрока на прошедший час. Т.е. его надо хранить.
Код: sql
1.
2.
3.
select *
from *
where * between * and *


Ну где-то так вот. У тебя ж датавремя есть, вот по нему и ставь условие.
...
Рейтинг: 0 / 0
Спроектировать систему рейтингов
    #38306082
Фотография Infernal V. Raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заняться было нечем
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
-- Создание таблиц
if object_id('tempdb..#player') is not null
	drop table #player;
go
if object_id('tempdb..#change_rating') is not null
	drop table #change_rating;
go
create table #player(id_user varchar(50), score int);
go
create table #change_rating(id_rating int identity, id_user varchar(50), rt_dt datetime, rt_current int, rt_prev int);
go
-- Заполнение данными
insert into #player(id_user, score) values ('player1', 20);
insert into #player(id_user, score) values ('player2', 10);
insert into #player(id_user, score) values ('player3', 30);
go
select * from #player order by score desc;
go
-- Добавление позиций рейтинга
insert into #change_rating(id_user, rt_current, rt_dt, rt_prev)
select id_user, ROW_NUMBER() OVER(ORDER BY score desc) AS rt, getdate() as dt,
	(select max(rt_current) from #change_rating r where r.id_user = a.id_user and r.rt_dt = (select max(rt_dt) from #change_rating r2 where r2.id_user = r.id_user)) as prev_rt
from #player a;
go
-- Меняем количество очков
update #player
	set score = 100
where id_user = 'player2';
select * from #player order by score desc;
go
-- Добавление позиций рейтинга
insert into #change_rating(id_user, rt_current, rt_dt, rt_prev)
select id_user, ROW_NUMBER() OVER(ORDER BY score desc) AS rt, getdate() as dt,
	(select max(rt_current) from #change_rating r where r.id_user = a.id_user and r.rt_dt = (select max(rt_dt) from #change_rating r2 where r2.id_user = r.id_user)) as prev_rt
from #player a;
go
-- История изменения рейтинга
select r.*, (r.rt_current - r.rt_prev) change_rt 
from #change_rating r
order by r.rt_dt desc, r.rt_current asc;
go
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Спроектировать систему рейтингов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]