Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Процедура на сравнение 2х дат в таблицах и вывод  [new]
Natali75675
Member

Откуда:
Сообщений: 7
Есть две таблицы: в первой таблице "Соискатель" есть поле "ДатаОбращения", а во второй таблице "Вакансии1" - поле "Испытательный срок". Нужно написать процедуру: Если Соискатель.ДатаОбращения >= Вакансии1.[Испытательный срок], то в поле Соискатель.Статус пишем "Нетрудоустроен" иначе "Трудоустроен"

К сообщению приложен файл. Размер - 11Kb
13 дек 16, 12:21    [19996677]     Ответить | Цитировать Сообщить модератору
 Re: Процедура на сравнение 2х дат в таблицах и вывод  [new]
aleks2
Guest
Natali75675
: Если Соискатель.ДатаОбращения >= Вакансии1.[Испытательный срок]

Кто сильнее: слон или кит?

ЗЫ. Дата и Срок - несравнимы.
13 дек 16, 12:26    [19996704]     Ответить | Цитировать Сообщить модератору
 Re: Процедура на сравнение 2х дат в таблицах и вывод  [new]
Natali75675
Member

Откуда:
Сообщений: 7
aleks2,
Я в курсе)
Там тоже дата, просто такое название название столбца.
13 дек 16, 12:38    [19996760]     Ответить | Цитировать Сообщить модератору
 Re: Процедура на сравнение 2х дат в таблицах и вывод  [new]
Natali75675
Member

Откуда:
Сообщений: 7
Пока только до такого додумалась:

CREATE PROCEDURE [dbo].[IspSrok]
AS
DECLARE
@D1 DATE,
@D2 DATE;

BEGIN

set @D1 = (Select ДатаОбращения FROM [Соискатель]);
set @D2 = (Select [Испытательный срок] FROM [Вакансии1]);

IF @D1 > @D2
INSERT INTO [Соискатель] (Статус) values ('Нетрудоустроен')
ELSE INSERT INTO [Соискатель] (Статус) values ('Трудоустроен')

END


Но эта процедура не работает, ошибка:

Сообщение 512, уровень 16, состояние 1, процедура IspSrok, строка 13
Вложенный запрос вернул больше одного значения. Это запрещено, когда вложенный запрос следует после =, !=, <, <=, >, >= или используется в качестве выражения.
13 дек 16, 13:54    [19997218]     Ответить | Цитировать Сообщить модератору
 Re: Процедура на сравнение 2х дат в таблицах и вывод  [new]
buven
Member

Откуда:
Сообщений: 792
Natali75675,

А вы ожидаете, что @D1 и @D2 чему должны быть равны?
13 дек 16, 14:09    [19997373]     Ответить | Цитировать Сообщить модератору
 Re: Процедура на сравнение 2х дат в таблицах и вывод  [new]
Natali75675
Member

Откуда:
Сообщений: 7
buven,
@D1 - дата из столбца "Соискатель.ДатаОбращения"
@D2 - дата из столбца "Вакансии1. [Испытательный срок]

Пыталась тут объявить, вряд ли правильно
set @D1 = (Select ДатаОбращения FROM [Соискатель]);
set @D2 = (Select [Испытательный срок] FROM [Вакансии1]);
13 дек 16, 14:15    [19997463]     Ответить | Цитировать Сообщить модератору
 Re: Процедура на сравнение 2х дат в таблицах и вывод  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Natali75675
buven,
@D1 - дата из столбца "Соискатель.ДатаОбращения"
@D2 - дата из столбца "Вакансии1. [Испытательный срок]

Пыталась тут объявить, вряд ли правильно
set @D1 = (Select ДатаОбращения FROM [Соискатель]);
set @D2 = (Select [Испытательный срок] FROM [Вакансии1]);

уточните в запросе какой соискатель и какая вакансия и т.п.
13 дек 16, 14:19    [19997509]     Ответить | Цитировать Сообщить модератору
 Re: Процедура на сравнение 2х дат в таблицах и вывод  [new]
aleks2
Guest
В голове у вас бардак.

У мя сильное подозрение, что никакой связи между Соискатель и Вакансии1 у вас нетути.
update s set Статус = case when s.ДатаОбращения >= v.[Испытательный срок] then N'Нетрудоустроен' else N'Трудоустроен' end
  from Соискатель as s inner join Вакансии1 as v on v.СоискательID = s.СоискательID;
13 дек 16, 14:20    [19997516]     Ответить | Цитировать Сообщить модератору
 Re: Процедура на сравнение 2х дат в таблицах и вывод  [new]
Natali75675
Member

Откуда:
Сообщений: 7
aleks2,

С бардаком вынуждена согласиться, действительно прошляпила внешний ключ. Спасибо, всё работает!
13 дек 16, 14:37    [19997652]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить