Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6   вперед  Ctrl      все
 Re: Запросы на подсчет должностей  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31338
fantanol
alexeyvg
пропущено...
Так про задание вы не рассказываете.

Что, в задании написано делать идентификатор типа varchar(max)?


В заданиях такого не пишут) Я сам решил так сделать
А что пишут? Структуру таблиц?
Вы её тоже скрываете.
Вы спрашиваете, как сделать непонятно что на неизвестной структуре данных, которую то ли вы разработали (правильно или нет?), то ли вам дали.

Вот поэтому я вам посоветовал проконсультироваться сначала в разделе "проектирование", рассказать про задание, поподробнее, показать структуру данные, обязательно упомянуть, что задание учебное.

А потом уже тут спрашивать про тонкости конкретной реализации всего этого на MSSQL.
16 май 17, 12:14    [20484376]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31338
iiyama
на защите 100% вопрос по FK
create table Расписание(id_Сотрудник varchar(max) not null, id_Должность varchar(max) not null ...
Вот вот.

fantanol даже не сможет сделать ПК на такое поле, и на защите профессора убьются об стену.
16 май 17, 12:15    [20484382]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
alexeyvg
fantanol даже не сможет сделать ПК на такое поле, и на защите профессора убьются об стену.

Нормальный руководитель такое на защиту не допустит, а нормальные профессора отвазелинят студента, а потом еще и научрука...
В противном случае, наша стоимость на рынке труда на фоне таких выпускников как минимум не обесценится... что... не может огорчать...
16 май 17, 12:26    [20484432]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
fantanol
Member

Откуда:
Сообщений: 191
Пытаюсь сделать триггер на запрет ввода даты.
Но без понятия как соединить две таблицы чтобы при выборе даты начала отпуска,у меня проверяло того ли я сотрудника отправляю в отпуск.

create TRIGGER dates ON Сотрудник 
after insert 
AS 
begin
IF EXISTS (SELECT * FROM inserted WHERE Дата_начала <= Дата_приема ) BEGIN
RAISERROR (N'Дата начала не может быть раньше даты приема',16,1);
return;
end;
END
GO
16 май 17, 14:21    [20485092]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31338
fantanol
Но без понятия как соединить две таблицы чтобы при выборе даты начала отпуска,у меня проверяло того ли я сотрудника отправляю в отпуск.
Соединение делается оператором JOIN
16 май 17, 16:33    [20485932]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
iiyama
Member

Откуда:
Сообщений: 642
fantanol,
1. Вы очень странно делаете, отправляете сотрудника в отпуск, а триггер делаете на таблицу Сотрудник
2.Ваша Таблица - Отпуск
create table Отпуск (
	id_Отпуск bigint not null identity(1,1) Primary key,
	Сотрудник varchar(max) not null,
	Вид_отпуска varchar(max) not null,
	Дата_начала date,
	Дата_окончания date,
	Основание varchar(max),
)

Вместо Сотрудник varchar(max) not null должна быть ссылка на таблицу сотрудников -> ID_Сотрудник int not null
3. По вопросу - делаете join - inserted.[FK сотрудника в табл Отпуск] = Сотрудник.[PK сотрудника]

PS. Люди дают Вам советы, но Вы их игнорируете. Если Вам они не интересны, то хотя бы напишите, чтобы мы не тратили время зря
16 май 17, 16:51    [20486019]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
fantanol
Member

Откуда:
Сообщений: 191
iiyama

3. По вопросу - делаете join - inserted.[FK сотрудника в табл Отпуск] = Сотрудник.[PK сотрудника]


Куда бы не ставил вашу строку, везде ругается на join(Неправильный синтаксис около ключевого слова "join".)

left и inner пробовал

create TRIGGER dates ON Отпуск 

after insert 

AS join - inserted.[Сотрудник] = Сотрудник.[id_Сотрудник]
begin
IF EXISTS (SELECT * FROM inserted WHERE Дата_начала <= Дата_приема ) BEGIN
RAISERROR (N'Дата начала не может быть раньше даты приема',16,1);
return;
end;
END
GO



iiyama
PS. Люди дают Вам советы, но Вы их игнорируете. Если Вам они не интересны, то хотя бы напишите, чтобы мы не тратили время зря


Я всё стараюсь учитывать
16 май 17, 20:37    [20486778]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
londinium
Member

Откуда: Киев
Сообщений: 1166
fantanol,

автор
Куда бы не ставил вашу строку, везде ругается на join(Неправильный синтаксис около ключевого слова "join"

тут не ругаться надо, тут надо матом крыть

create TRIGGER dates ON Отпуск 

after insert 

AS    ---join - inserted.[Сотрудник] = Сотрудник.[id_Сотрудник](ЭТО ВООБЩЕ ЧТО??)
begin
IF EXISTS (SELECT * FROM inserted WHERE Дата_начала <= Дата_приема ) BEGIN
RAISERROR (N'Дата начала не может быть раньше даты приема',16,1);
return;
end;
END
GO
16 май 17, 20:52    [20486839]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
fantanol
Member

Откуда:
Сообщений: 191
londinium
fantanol,

автор
Куда бы не ставил вашу строку, везде ругается на join(Неправильный синтаксис около ключевого слова "join"

тут не ругаться надо, тут надо матом крыть

create TRIGGER dates ON Отпуск 

after insert 

AS    ---join - inserted.[Сотрудник] = Сотрудник.[id_Сотрудник](ЭТО ВООБЩЕ ЧТО??)
begin
IF EXISTS (SELECT * FROM inserted WHERE Дата_начала <= Дата_приема ) BEGIN
RAISERROR (N'Дата начала не может быть раньше даты приема',16,1);
return;
end;
END
GO

я пытался
16 май 17, 21:08    [20486877]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
xenix
Guest
fantanol,

Это похвально, что пытался
IF OBJECT_ID(N'DBO.DATES;',N'TR')IS NOT NULL
  DROP TRIGGER DBO.DATES;
GO

create TRIGGER dates ON Отпуск 

after insert 

AS    ---join - inserted.[Сотрудник] = Сотрудник.[id_Сотрудник](ЭТО ВООБЩЕ ЧТО??)
begin
/*
IF EXISTS (SELECT * FROM inserted WHERE Дата_начала <= Дата_приема ) BEGIN
RAISERROR (N'Дата начала не может быть раньше даты приема',16,1);
*/
IF(EXISTS
       (SELECT 1 FROM INSERTED I JOIN [Сотрудник]S ON I.[Сотрудник]=S.[id_Сотрудник]
            WHERE I.[Дата_начала]<=S.[Дата_приема]))
    RAISERROR (N'Дата начала не может быть раньше даты приема',16,1);
return;
end;
END
GO
16 май 17, 21:21    [20486917]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
fantanol
Member

Откуда:
Сообщений: 191
xenix
fantanol,

Это похвально, что пытался
IF OBJECT_ID(N'DBO.DATES;',N'TR')IS NOT NULL
  DROP TRIGGER DBO.DATES;
GO

create TRIGGER dates ON Отпуск 

after insert 

AS    ---join - inserted.[Сотрудник] = Сотрудник.[id_Сотрудник](ЭТО ВООБЩЕ ЧТО??)
begin
/*
IF EXISTS (SELECT * FROM inserted WHERE Дата_начала <= Дата_приема ) BEGIN
RAISERROR (N'Дата начала не может быть раньше даты приема',16,1);
*/
IF(EXISTS
       (SELECT 1 FROM INSERTED I JOIN [Сотрудник]S ON I.[Сотрудник]=S.[id_Сотрудник]
            WHERE I.[Дата_начала]<=S.[Дата_приема]))
    RAISERROR (N'Дата начала не может быть раньше даты приема',16,1);
return;
end;
END
GO

Триггер прошел,но ограничения почему-то не работают
16 май 17, 23:50    [20487355]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
rnk
Member

Откуда:
Сообщений: 126
fantanol
xenix
IF OBJECT_ID(N'DBO.DATES;',N'TR')IS NOT NULL
                       ^^^

Убери эту точку с запятой, она портит всю малину. Триггера с именем "DATES;" не существует, и OBJECT_ID всегда NULL.
17 май 17, 12:41    [20489280]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31338
fantanol
Триггер прошел,но ограничения почему-то не работают
Это блондинки так пишут, не работает.

А программист пишет так:

Есть такая то таблица Сотрудник, в ней такие то данные
Есть такая то таблица Отпуск, в ней такие то данные

Я вставляю такие то данные в таблицу Отпуск, такой то командой

Триггер не показывает сообщение об ошибке.
Я хочу, что бы он показывал ошибку, потому что данные неправильные по такой то причине.

Всё это удобно сделать тестовым скриптом с временными таблицами.

И всё сразу будет понятно.
17 май 17, 14:11    [20489769]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
fantanol
Member

Откуда:
Сообщений: 191
alexeyvg
fantanol
Триггер прошел,но ограничения почему-то не работают
Это блондинки так пишут, не работает.

А программист пишет так:

Есть такая то таблица Сотрудник, в ней такие то данные
Есть такая то таблица Отпуск, в ней такие то данные

Я вставляю такие то данные в таблицу Отпуск, такой то командой

Триггер не показывает сообщение об ошибке.
Я хочу, что бы он показывал ошибку, потому что данные неправильные по такой то причине.

Всё это удобно сделать тестовым скриптом с временными таблицами.

И всё сразу будет понятно.

Мне бы исправить триггер,который мне скинули выше. Зачем мне делать что-то заново?!
17 май 17, 14:40    [20489920]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
rnk
Member

Откуда:
Сообщений: 126
fantanol
alexeyvg
пропущено...
Это блондинки так пишут, не работает.

А программист пишет так:

Есть такая то таблица Сотрудник, в ней такие то данные
Есть такая то таблица Отпуск, в ней такие то данные

Я вставляю такие то данные в таблицу Отпуск, такой то командой

Триггер не показывает сообщение об ошибке.
Я хочу, что бы он показывал ошибку, потому что данные неправильные по такой то причине.

Всё это удобно сделать тестовым скриптом с временными таблицами.

И всё сразу будет понятно.

Мне бы исправить триггер,который мне скинули выше. Зачем мне делать что-то заново?!

Я уже писал — уберите точку с запятой внутри OBJECT_ID! Из-за неё код триггера не обновляется.
17 май 17, 14:59    [20490018]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
rnk
fantanol
пропущено...

Мне бы исправить триггер,который мне скинули выше. Зачем мне делать что-то заново?!

Я уже писал — уберите точку с запятой внутри OBJECT_ID! Из-за неё код триггера не обновляется.

вы полагаете что ТС не видит длинной КРАСНОЙ надписи?
17 май 17, 15:07    [20490061]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
rnk
Member

Откуда:
Сообщений: 126
TaPaK
rnk
пропущено...
Я уже писал — уберите точку с запятой внутри OBJECT_ID! Из-за неё код триггера не обновляется.

вы полагаете что ТС не видит длинной КРАСНОЙ надписи?

Я полагаю, что OBJECT_ID всегда выдаёт NULL, соответственно, старый триггер не удаляется и обновления кода триггера не происходит.
17 май 17, 17:06    [20490663]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
rnk
TaPaK
пропущено...

вы полагаете что ТС не видит длинной КРАСНОЙ надписи?

Я полагаю, что OBJECT_ID всегда выдаёт NULL, соответственно, старый триггер не удаляется и обновления кода триггера не происходит.

а как же красная надпись? думаете не будет смущать?
17 май 17, 17:08    [20490670]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
rnk
Member

Откуда:
Сообщений: 126
TaPaK
rnk
пропущено...
Я полагаю, что OBJECT_ID всегда выдаёт NULL, соответственно, старый триггер не удаляется и обновления кода триггера не происходит.

а как же красная надпись? думаете не будет смущать?

К сожалению, я не телепат и не ясновидящий, не вижу, какие надписи выскакивают у ТС на экране и не могу почувствовать степень его ответного смущения.

Но если код приведён точно, то обновления триггера не произойдёт, это медицинский факт.
17 май 17, 17:17    [20490713]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31338
fantanol
alexeyvg
пропущено...
Это блондинки так пишут, не работает.

А программист пишет так:

Есть такая то таблица Сотрудник, в ней такие то данные
Есть такая то таблица Отпуск, в ней такие то данные

Я вставляю такие то данные в таблицу Отпуск, такой то командой

Триггер не показывает сообщение об ошибке.
Я хочу, что бы он показывал ошибку, потому что данные неправильные по такой то причине.

Всё это удобно сделать тестовым скриптом с временными таблицами.

И всё сразу будет понятно.

Мне бы исправить триггер,который мне скинули выше. Зачем мне делать что-то заново?!
Ээээ, что значит делать заново???

Я говорю, непонятно, что означает ваше "не работает".

Зачем вы тут жалуетесь, что не работает, говорите, что "Мне бы исправить триггер", но не говорите, что вам нужно получить???
17 май 17, 17:19    [20490722]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31338
TaPaK
а как же красная надпись? думаете не будет смущать?
А может, про это автор и говорит, что "ограничения не работают"?
17 май 17, 17:20    [20490727]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
rnk
TaPaK
пропущено...

а как же красная надпись? думаете не будет смущать?

К сожалению, я не телепат и не ясновидящий, не вижу, какие надписи выскакивают у ТС на экране и не могу почувствовать степень его ответного смущения.

Но если код приведён точно, то обновления триггера не произойдёт, это медицинский факт.

обратитесь к врачу

There is already an object named 'dates' in the database.
17 май 17, 17:21    [20490729]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
rnk
Member

Откуда:
Сообщений: 126
TaPaK
rnk
пропущено...
Но если код приведён точно, то обновления триггера не произойдёт, это медицинский факт.

There is already an object named 'dates' in the database.

Само собой. Я просто думал, что вы это про RAISERROR, но не был уверен. Едем дальше.

fantanol, вы видели сообщение "There is already an object named 'dates' in the database" при попытке обновить триггер? Что делали для исправления этой ошибки?
17 май 17, 17:27    [20490759]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
fantanol
Member

Откуда:
Сообщений: 191
Точку с запятой убрал и заработало.

Можно ли к этому триггеру добавить еще одно ограничением,чтобы между началом и концом отпуска было не больше 21 дня? Спасибо

К сообщению приложен файл. Размер - 13Kb
18 май 17, 14:23    [20493041]     Ответить | Цитировать Сообщить модератору
 Re: Запросы на подсчет должностей  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
fantanol
Можно ли к этому триггеру добавить еще одно ограничением,чтобы между началом и концом отпуска было не больше 21 дня?

Можно. Устного разрешения достаточно, или вам нужно письменное?
18 май 17, 14:27    [20493055]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить