@danysm0d

Хочу услышать мнения по поводу скриптов?

Есть вот такая диаграмма бд, надеюсь по названиям полей +-понятны связи между таблицами.5c5e0dea99345533014337.png

Собственно Само задание такое: Реализовать скрипты для получения след.инфы
1.Текущий рейтинг игроков в порядке убывания
2.Последние N изменений рейтинга игрока
3.Последние N матчей игрока
4.Последние N личных встреч между двумя игроками
5.Итоговая таблица турнира
6.Все матчи турнира в хронологическом порядке

А вот и сами скрипты
/* Part1*/
select * from Players order by -rating

/* Part2*/
select top(3)
	P.nick, 
	M.date,
	R.old_rating,
	R.new_rating
from Players P 
 join Change_Rating R on(P.id=4) and(P.id=R.id_pl)
 join Matches M on(R.id_M=M.id)
order by M.date DESC 

/* Part3*/
select top(2)
	P.nick,
	M.date
from Matches M
join Players P on(P.id=M.id_pl1 or P.id=M.id_pl2) and P.id=4
order by M.date DESC

/* Part4*/
select top(2)
	F.nick,
	S.nick,
	M.date
from Matches M
join Players F on(M.id_pl1=F.id or M.id_pl2=F.id) and(F.id=4)
join Players S on(M.id_pl2=S.id or M.id_pl1=S.id) and(S.id=6)
order by M.date DESC

/* Part5*/
select 
	P.nick,
	T.points
from(
	select
			R.id_pl,
			sum(R.new_rating - R.old_rating) as points
	from Tournaments T
	join Matches M on(T.id=M.id_T) and (T.id=2)
	join Change_Rating R on(R.id_M=M.id)
	group by R.id_pl
	) as T
join Players P on(P.id=T.id_pl)
order by -T.points

/* Part6*/
select
	F.nick,
	S.nick,
	M.date
from Matches M
join Tournaments T on(M.id_T=T.id)and(T.id=1)
join Players F on(F.id=M.id_pl1)
join Players S on(S.id=M.id_pl2)
order by M.
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
Players_Tournaments лишняя, все игроки турнира есть в Matches.
Даты в Tournaments не нужны, все даты есть в Matches.

Дополнительно: не экономьте символы, все поля можно называть полным именем.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы