Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / БД чемпионата по футболу / 5 сообщений из 5, страница 1 из 1
29.02.2004, 15:37
    #32425508
va2dim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
БД чемпионата по футболу
table_group
id, group

table_team
id, group_id(<=table_group.id), team

table_result
id, data[[,]time], hosts(<=table_team.id), guests(<=table_team.id), results, penalties, stadion_id(<=table_stadin.id)

table_stadin
id, stadion

База где-то подобной конструкции,
но надо будет строить выборку 1/4, 1/2, финала.

Как организовать такую выбоку?

Есть ли у кого нибудь был подобный опыт прошу указать недостатки в структуре БД или дать пример подобного рода структуры.
...
Рейтинг: 0 / 0
03.03.2004, 15:58
    #32429768
babaEGA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
БД чемпионата по футболу
1) Поясните таблицу table_group

2) Не совсем понятна таблица table_results, а именно поля - results, penalties
Имхо результат игры (типа 3:1) лучше хранить в двух полях :
1. кол-во голов, которые забили хозяева
2. кол-во голов, забитых гостями...
Иначе потом будет много мароки с подсчетом общего кол-ва забитых какой-либо командой голов...

+ в той же таблице
сделать отдельное поле - где хранить "тип игры" - 1/4, 1/2, финала.
...
Рейтинг: 0 / 0
09.03.2004, 00:09
    #32434011
va2dim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
БД чемпионата по футболу
В принципе так я и сделал, только этапы вынес в отдельную таблицы.

Всем спасибо.
...
Рейтинг: 0 / 0
09.03.2004, 07:40
    #32434069
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
БД чемпионата по футболу
Код: plaintext
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.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
create table Teams(
        [Team] [int] not null,
        [TeamName] varchar( 30 )
)
go
insert into Teams (Team,TeamName)values( 1 ,'Россия')
insert into Teams (Team,TeamName)values( 2 ,'Бразилия')
insert into Teams (Team,TeamName)values( 3 ,'Германия')
insert into Teams (Team,TeamName)values( 4 ,'Голландия')

Create table Games(
        [Tour] varchar( 10 ) NOT NULL,   -- тур
 
        [HTeam] int NOT NULL,          -- команда 1
 
        [HGoals] int,                  -- число голов команды 1
 
        [CTeam] int NOT NULL,          -- команда 2
 
        [CGoals] int                   -- число голов команды 2
 
)
go
insert into Games([Tour],[HTeam],[HGoals],[CTeam],[CGoals])
values('1/2', 1 , 3 , 2 , 1 )
insert into Games([Tour],[HTeam],[HGoals],[CTeam],[CGoals])
values('1/2', 3 , 1 , 4 , 2 )
insert into Games([Tour],[HTeam],[HGoals],[CTeam],[CGoals])
values('финал', 1 , 4 , 4 , 2 )

 -- генератор запроса 
 

declare @sql varchar( 8000 )
declare @Team integer,@TeamName varchar( 50 )
select @sql = 'select  g.Tour as ''Тур'', t.TeamName as
''Команда\Команда'''
declare Teams cursor local forward_only for
select Team,Teamname from Teams
open teams
fetch next from teams into @Team,@TeamName
while @@fetch_status= 0 
 begin
  set @sql = @sql + ',max(case when t.Team = '+cast(@Team as varchar)+' then
''-'''+
  ' when g.HTeam = '+cast(@Team as varchar)+' or g.CTeam = '+cast(@Team as
varchar)+
  ' then cast(g.HGoals as varchar)+'':''+cast(g.CGoals as varchar) else ''-'' end) as '''+@TeamName+''''
  fetch next from teams into @Team,@TeamName
 end
close teams
deallocate teams
set @sql = @sql+' from Teams t left outer join games g on (g.HTeam = t.Team or g.CTeam = t.Team)'+
           ' group by t.Team, t.TeamName, g.Tour'+
           ' order by g.Tour, t.TeamName'
exec(@sql)


 -- удаление тестовых таблиц
 
drop table Teams
drop table Games


...
Рейтинг: 0 / 0
11.03.2004, 06:41
    #32437174
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
БД чемпионата по футболу
исправлен небольшой косяк- Россия вперед!!!
Код: plaintext
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.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
create table Teams(
        [Team] [int] not null,
        [TeamName] varchar( 30 )
)
go
insert into Teams (Team,TeamName)values( 1 ,'Россия')
insert into Teams (Team,TeamName)values( 2 ,'Бразилия')
insert into Teams (Team,TeamName)values( 3 ,'Германия')
insert into Teams (Team,TeamName)values( 4 ,'Голландия')

Create table Games(
        [Tour] varchar( 10 ) NOT NULL,   -- тур
 
        [HTeam] int NOT NULL,          -- команда 1
 
        [HGoals] int,                  -- число голов команды 1
 
        [CTeam] int NOT NULL,          -- команда 2
 
        [CGoals] int                   -- число голов команды 2
 
)
go
insert into Games([Tour],[HTeam],[HGoals],[CTeam],[CGoals])
values('1/2', 1 , 3 , 2 , 1 )
insert into Games([Tour],[HTeam],[HGoals],[CTeam],[CGoals])
values('1/2', 3 , 1 , 4 , 2 )
insert into Games([Tour],[HTeam],[HGoals],[CTeam],[CGoals])
values('финал', 1 , 4 , 4 , 2 )

 -- генератор запроса 
 

declare @sql varchar( 8000 )
declare @Team integer,@TeamName varchar( 50 )
select @sql = 'select  g.Tour as ''Тур'', t.TeamName as
''Команда\Команда'''
declare Teams cursor local forward_only for
select Team,Teamname from Teams
open teams
fetch next from teams into @Team,@TeamName
while @@fetch_status= 0 
 begin
  set @sql = @sql + ',max(case when t.Team = '+cast(@Team as varchar)+' then
''-'''+
  ' when g.HTeam = '+cast(@Team as varchar)+
  ' then cast(g.CGoals as varchar)+'':''+cast(g.HGoals as varchar)'+
  ' when g.CTeam = '+cast(@Team as varchar)+
  ' then cast(g.HGoals as varchar)+'':''+cast(g.CGoals as varchar)'+
  ' else ''-'' end) as '''+@TeamName+''''
  fetch next from teams into @Team,@TeamName
 end
close teams
deallocate teams
set @sql = @sql+' from Teams t left outer join games g on (g.HTeam = t.Team or g.CTeam = t.Team)'+
           ' group by t.Team, t.TeamName, g.Tour'+
           ' order by g.Tour, t.TeamName'
exec(@sql)


 -- удаление тестовых таблиц
 
drop table Teams
drop table Games
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / БД чемпионата по футболу / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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