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

Откуда:
Сообщений: 81
Есть триггер After INSERT, UPDATE, в нем реализована проверка на корректность вводимого диапазона дат. Их несколько, приведу парочку для понимания сути.

1.
-- проверить больше ли дата конца даты начала
if exists(select 1 from inserted where DateTo < DateFrom)
  raiserror('Конфликт: Дата конца не может быть меньше даты начала периода',11,1)

2.
-- Проверить, есть ли ставки внутри нового периода
if exists(select 1 
          from dbo.AAA CTV
          join inserted i on i.AGNClientID = CTV.AGNClientID
                and (i.DocSubTypeID = CTV.DocSubTypeID)      --<<<< ВОТ ТУТ ЧЕГО-ТО НЕ ХВАТАЕТ ВЕРОЯТНО
                and i.DocTypeID = CTV.DocTypeID            
          where CTV.id not in (select id from inserted)
            and CTV.DateFrom >= i.DateFrom
            and CTV.DateTo <= i.DateTo)
begin
  rollback tran
  raiserror('Конфликт: есть ставки внутри нового периода',11,1)
  return  
end


Закавыка в том, что DocSubTypeID необязательное поле и при значении равном null означает "любой подтип", т.е. в условии джойна по подтипу надо это как-то учесть. Т.е. выдавать ошибку, если есть хоть одна запись в этом периоде дат и по этому типу.

Помогите дописать запрос.
12 дек 12, 18:07    [13621536]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь с sql-запросом  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37050
and (
  i.DocSubTypeID = CTV.DocSubTypeID
  or (
    i.DocSubTypeID is null
    and CTV.DocSubTypeID is null
  )
)      --<<<< ВОТ ТУТ ЧЕГО-ТО НЕ ХВАТАЕТ ВЕРОЯТНО
12 дек 12, 18:08    [13621547]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь с sql-запросом  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37050
Ну или один is null по тому полю, null в котором означает "любой подтип".
12 дек 12, 18:10    [13621552]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь с sql-запросом  [new]
swaap
Member

Откуда:
Сообщений: 109
and (i.DocSubTypeID is null or i.DocSubTypeID = CTV.DocSubTypeID) --<<<< ВОТ ТУТ ЧЕГО-ТО НЕ ХВАТАЕТ ВЕРОЯТНО

мб так?
12 дек 12, 18:12    [13621567]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь с sql-запросом  [new]
denwir
Member

Откуда:
Сообщений: 81
Попробую.
12 дек 12, 18:36    [13621662]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь с sql-запросом  [new]
denwir
Member

Откуда:
Сообщений: 81
Не фуручит. Ошибка райзится и при корректных условиях.
12 дек 12, 18:54    [13621731]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь с sql-запросом  [new]
denwir
Member

Откуда:
Сообщений: 81
Глючу. Все работает.
12 дек 12, 18:55    [13621735]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить