powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / БД чемпионата по футболу
5 сообщений из 5, страница 1 из 1
БД чемпионата по футболу
    #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
БД чемпионата по футболу
    #32429768
Фотография babaEGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Поясните таблицу table_group

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

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

Всем спасибо.
...
Рейтинг: 0 / 0
БД чемпионата по футболу
    #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
БД чемпионата по футболу
    #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]