Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 28.09.2010
Сообщений: 25
1

Не могу сделать триггер для составления правильного расписания графика

16.05.2012, 16:04. Показов 1774. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача такова:
есть таблица график тренировок, в котором: id_object, id_section, id_trener, start_time, end_time. Надо чтобы триггер не позволял перекрещивание времени начала и конца тренировки на одном и том же объекте, т.е. на одном и том же объекте две разных секции не занимались в одно время и не мешали друг другу. Спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.05.2012, 16:04
Ответы с готовыми решениями:

Макрос для составления расписания
Есть ли среди вас умельцы которые осилят создание макроса для следующей задачи Есть 3 таблицы. ...

Программа для составления расписания занятий
Нужна программа для составления расписания занятий на LAZARUS.

Генетический алгоритм для составления расписания
Здравствуйте. В генетическом алгоритме для составления расписаний что берется в качестве особи,...

Генетический алгоритм для составления расписания
В генетическом алгоритме для составления расписаний что берется в качестве особи, хромосомы и гена....

11
Leax
16.05.2012, 17:08
  #2

Не по теме:

Уже и сюда ученики попёрли, как в разделе "C# для новичков" ((

0
0 / 0 / 1
Регистрация: 28.09.2010
Сообщений: 25
16.05.2012, 17:11  [ТС] 3
Цитата Сообщение от Leax Посмотреть сообщение

Не по теме:

Уже и сюда ученики попёрли, как в разделе "C# для новичков" ((

аа, ну ты типа бывалый) блесни умом, подскажи мне, неразумному, что и как в таком случае
0
194 / 193 / 17
Регистрация: 07.11.2010
Сообщений: 477
16.05.2012, 17:12 4
Цитата Сообщение от wassaby_ Посмотреть сообщение
аа, ну ты типа бывалый) блесни умом, подскажи мне, неразумному, что и как в таком случае
я лучше в это время денег заработаю, чем халявщикам помогать
0
0 / 0 / 1
Регистрация: 28.09.2010
Сообщений: 25
16.05.2012, 17:14  [ТС] 5
Цитата Сообщение от Leax Посмотреть сообщение
я лучше в это время денег заработаю, чем халявщикам помогать
ты в это время тут сидишь
0
194 / 193 / 17
Регистрация: 07.11.2010
Сообщений: 477
16.05.2012, 17:20 6
Цитата Сообщение от wassaby_ Посмотреть сообщение
ты в это время тут сидишь
я принципиально помогаю только тем, кто сам хоть что то делает, а не "сделайте мне всё за спасибо"
1
0 / 0 / 1
Регистрация: 28.09.2010
Сообщений: 25
16.05.2012, 17:27  [ТС] 7
Цитата Сообщение от Leax Посмотреть сообщение
я принципиально помогаю только тем, кто сам хоть что то делает, а не "сделайте мне всё за спасибо"
в таком случае ты ошибаешься, если думаешь, что я "халявщик" не пытался это сделать:
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
CREATE TRIGGER graf_tren1
ON graf_trenirovok
FOR INSERT, UPDATE
AS
DECLARE @time1 INT,
        @end_time INT,
        @start_time INT,
        @i_obj INT,
        @gt_obj INT
BEGIN
SELECT @time1=datepart(hh,i.start_time),
       @end_time=datepart(hh,gt.end_time),
       @start_time=datepart(hh,gt.start_time),
       @i_obj=i.id_obj,
       @gt_obj=gt.id_obj
FROM inserted i 
JOIN graf_trenirovok gt ON i.id_obj=gt.id_obj
IF @time1 BETWEEN @start_time AND @end_time
AND @i_obj=@gt_obj
BEGIN
ROLLBACK TRAN
RAISERROR ('В это время объект занят другой секцией',16,10)
END
END
Конечно, теперь то скажешь небось, что после такого отношения ты снова из принципа не будешь помогать)
0
1643 / 1144 / 171
Регистрация: 23.07.2010
Сообщений: 6,794
16.05.2012, 17:52 8
Думается мне, составления графиков (расписаний) скорее задача оптимизации.
В такой постановке ты не учитываешь много признаков. Например, в плане оптимальной загруженности объектов для тренировок
0
0 / 0 / 1
Регистрация: 28.09.2010
Сообщений: 25
16.05.2012, 17:53  [ТС] 9
Цитата Сообщение от pincet Посмотреть сообщение
Думается мне, составления графиков (расписаний) скорее задача оптимизации.
В такой постановке ты не учитываешь много признаков. Например, в плане оптимальной загруженности объектов для тренировок
спасибо, но суть задачи пока только в расписаний времени, а загруженность я сам разберу
0
194 / 193 / 17
Регистрация: 07.11.2010
Сообщений: 477
16.05.2012, 17:58 10
Попробуй так, не могу проверить:
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TRIGGER graf_tren1
ON graf_trenirovok
FOR INSERT, UPDATE
AS
    IF EXISTS(
        Select 1 from graf_tren1 g
            join inserted i on g.id_object = i.id_object
            where g.id_section <> i.id_section and
                ((i.start_time Between g.start_time and g.end_time) Or 
                 (i.end_time Between g.start_time and g.end_time))
    )
    BEGIN
      ROLLBACK TRAN -- может эта строка и не нужна, т.к. RaiseError в триггере не дает вставлять неверные данные при редактировании
      RAISERROR ('В это время объект занят другой секцией',16,10)
    END
З.Ы.: Почему бы сразу не выкладывать свои наработки?
1
1643 / 1144 / 171
Регистрация: 23.07.2010
Сообщений: 6,794
16.05.2012, 18:14 11
Цитата Сообщение от wassaby_ Посмотреть сообщение
спасибо, но суть задачи пока только в расписаний времени, а загруженность я сам разберу
так в том вся и штука, что иногда выгоднее провести 2 занятия по 1 часу, чем одно на полтора и полчаса простоять.
0
0 / 0 / 1
Регистрация: 28.09.2010
Сообщений: 25
16.05.2012, 18:18  [ТС] 12
Цитата Сообщение от wassaby_ Посмотреть сообщение
в таком случае ты ошибаешься, если думаешь, что я "халявщик" не пытался это сделать:
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
CREATE TRIGGER graf_tren1
ON graf_trenirovok
FOR INSERT, UPDATE
AS
DECLARE @time1 INT,
        @end_time INT,
        @start_time INT,
        @i_obj INT,
        @gt_obj INT
BEGIN
SELECT @time1=datepart(hh,i.start_time),
       @end_time=datepart(hh,gt.end_time),
       @start_time=datepart(hh,gt.start_time),
       @i_obj=i.id_obj,
       @gt_obj=gt.id_obj
FROM inserted i 
JOIN graf_trenirovok gt ON i.id_obj=gt.id_obj
IF @time1 BETWEEN @start_time AND @end_time
AND @i_obj=@gt_obj
BEGIN
ROLLBACK TRAN
RAISERROR ('В это время объект занят другой секцией',16,10)
END
END
Конечно, теперь то скажешь небось, что после такого отношения ты снова из принципа не будешь помогать)
Спасибо) ща просмотрю

Добавлено через 2 минуты
Цитата Сообщение от Leax Посмотреть сообщение
Попробуй так, не могу проверить:
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TRIGGER graf_tren1
ON graf_trenirovok
FOR INSERT, UPDATE
AS
    IF EXISTS(
        Select 1 from graf_tren1 g
            join inserted i on g.id_object = i.id_object
            where g.id_section <> i.id_section and
                ((i.start_time Between g.start_time and g.end_time) Or 
                 (i.end_time Between g.start_time and g.end_time))
    )
    BEGIN
      ROLLBACK TRAN -- может эта строка и не нужна, т.к. RaiseError в триггере не дает вставлять неверные данные при редактировании
      RAISERROR ('В это время объект занят другой секцией',16,10)
    END
З.Ы.: Почему бы сразу не выкладывать свои наработки?
Спасибо за помощь. Ща попробую.

З.Ы. В след раз буду)
0
16.05.2012, 18:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.05.2012, 18:18
Помогаю со студенческими работами здесь

Нужно написать программу для составления расписания
всем привет) нужно сделать программу для составления расписания в универе, к примеру для одной -...

Вычисление дней недели для составления расписания
Доброе время суток! Буквально несколько дней назад начал жадно вгрызаться в мануалы по С++ и сейчас...

Разработка математической модели и программного обеспечения для задач составления расписания в вузе
Всем привет! Нужно написать прогу по следующей теме: &quot;Разработка математической модели и...

Алгоритм составления расписания
какой из алгоритмов можно применить к решению следующей задачи Дано: 1. Множество операций...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru