Skrypt tabel sportowych
KJ - 24-12-2006 00:37
Skrypt tabel sportowych
Witam
Czy ma ktoś skrypt lub podpowie jak napisac (od czego zacząć) automatycznie generujący tabele np. piłkarskie tzn. wpisuję wyniki danej kolejki a skrypt automatycznie szereguje odpowiednio drużyny w tabeli
deMeS - 24-12-2006 00:37
Użytkownik "KJ" <kjuzik@poczta.onet.pl> napisał w wiadomości news:em5n3p$pfp$1@nemesis.news.tpi.pl... > Witam > > Czy ma ktoś skrypt lub podpowie jak napisac (od czego zacząć) automatycznie > generujący tabele np. piłkarskie tzn. wpisuję wyniki danej kolejki a skrypt > automatycznie szereguje odpowiednio drużyny w tabeli >
To oczywiście zależy w jaki sposób masz przechowywane w bazie informacje o wynikach spotkań. Kiedyś napisałem funkcję w MSSQL Serverze 2000, która wyliczała mi dla każdej drużyny ilość zdobytych punktów, straconych i strzelonych bramek, wygrane, przegrane i remisy na podstawie przechowywanych w bazie wyników. Paremetrami wejściowymi były id_sezonu i kolejka (po ilu kolejkach mają być wyliczone te statystyki). Kwestią do napisania pozostaje więc jeszcze sortowanie takiej tabeli. Jesli jako kryterium zajętego miejsca przy równej ilości punktów będzie tylko bilans bramkowy to sprawa jest prosta - wystarczy zwykłe sortowanie. Jesli brane są pod uwagę bezpośrednie mecze to trzeba by tu jeszcze coś dopisać...
Tabela mecze:
KOLUMNA FORMAT OPIS
Id_mecz Int (4) PRIMARY KEY, NOT NULL Identyfikator meczu
Id_gospodarz Int (4) NOT NULL Identyfikator klubu, który jest w tym meczu gospodarzem
Id_gosc Int (4) NOT NULL Identyfikator klubu, który jest w tym meczu gościem
Id_sezon Int (4) NOT NULL Identyfikator sezonu
Id_stadion Int (4) Identyfikator stadionu, na którym rozgrywany jest mecz
Kolejka Int (4) NOT NULL Numer kolejki ligowej, w której rozgrywany jest mecz
Id_sedzia Int (4) Identyfikator sędziego
Data_meczu Smalldatetime Data rozegrania meczu
Wynik Varchar (5) Wynik meczu
Frekwencja Int (4) Frekwencja na trybunach
CREATE FUNCTION Tabela (@id_sezon int, @kolejka int)
RETURNS TABLE AS
RETURN
(
select nazwa_kr,
sum(punkty) as punkty,
sum(strzelone) as strzelone,
sum(stracone) as stracone,
sum(strzelone-stracone) as roznica,
sum(wygrane) as wygrane,
sum(remisy) as remisy,
sum(porazki) as porazki
from
(
/*ZDOBYTE PUNKTY, WYGRANE, REMISY I PORAŻKI*/
select id,
sum(punkty) as punkty,
0 as strzelone,
0 as stracone,
0 as roznica,
sum(wygrane) as wygrane,
sum(remisy) as remisy,
sum(porazki) as porazki
from
(
/*Punkty zdobyte przez drużynę grającą jako gospodarz*/
select id_gospodarz as id,
'punkty' = sum(case
when convert(int , substring(wynik,1,patindex('%:%',wynik)-1)) > convert(int , substring(wynik,patindex('%:%',wynik)+1, len(wynik))) then 3
when convert(int , substring(wynik,1,patindex('%:%',wynik)-1)) < convert(int , substring(wynik,patindex('%:%',wynik)+1, len(wynik))) then 0
else 1
end),
'wygrane' = sum(case
when convert(int , substring(wynik,1,patindex('%:%',wynik)-1)) > convert(int , substring(wynik,patindex('%:%',wynik)+1, len(wynik))) then 1
else 0
end),
'remisy' = sum(case
when convert(int , substring(wynik,1,patindex('%:%',wynik)-1)) = convert(int , substring(wynik,patindex('%:%',wynik)+1, len(wynik))) then 1
else 0
end),
'porazki' = sum(case
when convert(int , substring(wynik,1,patindex('%:%',wynik)-1)) < convert(int , substring(wynik,patindex('%:%',wynik)+1,len(wynik) )) then 1
else 0
end)
from mecze
where id_sezon=@id_sezon
and kolejka<=@kolejka
group by id_gospodarz
UNION ALL
/*Punkty zdobyte przez drużynę grającą jako gość*/
select id_gosc as id,
'punkty' = sum(case
when convert(int , substring(wynik,1,patindex('%:%',wynik)-1)) < convert(int , substring(wynik,patindex('%:%',wynik)+1,len(wynik) )) then 3
when convert(int , substring(wynik,1,patindex('%:%',wynik)-1)) > convert(int , substring(wynik,patindex('%:%',wynik)+1,len(wynik) )) then 0
else 1
end),
'wygrane' = sum(case
when convert(int , substring(wynik,1,patindex('%:%',wynik)-1)) < convert(int , substring(wynik,patindex('%:%',wynik)+1,len(wynik) )) then 1
else 0
end),
'remisy' = sum(case
when convert(int , substring(wynik,1,patindex('%:%',wynik)-1)) = convert(int , substring(wynik,patindex('%:%',wynik)+1,len(wynik) )) then 1
else 0
end),
'porazki' = sum(case
when convert(int , substring(wynik,1,patindex('%:%',wynik)-1)) > convert(int , substring(wynik,patindex('%:%',wynik)+1,len(wynik) )) then 1
else 0
end)
from mecze
where id_sezon=@id_sezon
and kolejka<=@kolejka
group by id_gosc
) as T
group by id
UNION ALL
/*STRZELONE I STRACONE BRAMKI*/
select id,
0 as punkty,
sum(strz) as strzelone,
sum(strac) as stracone,
0 as roznica,
0 as wygrane,
0 as remisy,
0 as porazki
from
(
/*Bramki strzelone i stracone przez drużynę grającą jako gospodarz*/
select id_gospodarz as id,
sum(convert(int , substring(wynik,1,patindex('%:%',wynik)-1))) as strz,
sum(convert(int , substring(wynik,patindex('%:%',wynik)+1,len(wynik) ))) as strac
from mecze
where id_sezon=@id_sezon
and kolejka<=@kolejka
group by id_gospodarz
UNION ALL
/*Bramki strzelone i stracone przez drużynę grającą jako gość*/
select id_gosc as id,
sum(convert(int , substring(wynik,patindex('%:%',wynik)+1,len(wynik) ))) as strz,
sum(convert(int , substring(wynik,1,patindex('%:%',wynik)-1))) as strac
from mecze
where id_sezon=@id_sezon
and kolejka<=@kolejka
group by id_gosc
) as T
group by id
) as T join kluby on T.id=kluby.id_klub
group by nazwa_kr
)
KJ - 24-12-2006 00:38
a mógłbym prosić w plikach i z krótką instrukcją bo jestem początkujący pozdr mój e-mail: kjuzik małpa poczta.onet.pl dzięki
> > Tabela mecze: > > KOLUMNA > FORMAT > OPIS > > Id_mecz > Int (4) PRIMARY KEY, NOT NULL > Identyfikator meczu > > Id_gospodarz > Int (4) NOT NULL > Identyfikator klubu, który jest w tym meczu gospodarzem
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?=
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
[mysql] Wyszukanie =?ISO-8859-2?Q?rekord=F3w=28powiazane_tabel?==?ISO-8859-2?Q?e=29?=
[MySQL] Zapytanie z =?ISO-8859-2?Q?dw=F3ch_tabel_na_raz_?==?ISO-8859-2?Q?i_grupowanie_po_wsp=F3lnym_polu=2E_Jak_=3F?=
zapytanie do =?ISO-8859-2?Q?dw=F3ch_tabel_z_limitem_wier?==?ISO-8859-2?Q?szy?=
[mysql] =?ISO-8859-2?Q?po=B3=B1czenie_tabel_wg_kolumn=2C_?==?ISO-8859-2?Q?nie_wierszy?=
Skrypt fotka.pl/sympatia.pl
Skrypt na backup (MSSQL2000) i restore (MSSQL2005)
Zapytanie SQL z =?ISO-8859-2?Q?pust=B1_tabel=B1?=
[MySQL] Backup tabel przez "BACKUP" i problem z prawami dostępu :(
zanotowane.pldoc.pisz.plpdf.pisz.ploefg.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|