Except в MS SQL Server

 
0
 
MS SQL Server
ava
Injener | 01.11.2006, 16:13
В helpe по этому оператору написан единственный пример, который у меня не работает:


Except({Canada, [British Columbia], Mexico, [British Columbia], USA, Washington}, {Canada, Mexico, California}, ALL)


Выдается такая ошибка:
[Microsoft][ODBC SQL Server Driver]Ошибка синтаксиса или нарушение доступа

Когда этот оператор использую как написано в стандарте по SQL то тоже не работает

(select CH.Cht from CH)
except
(select CH.Cht from CH where CH.Cht > 9000)


Ошибка:

Server: Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'except'.
Ответы (7)
ava
Vit | 01.11.2006, 16:38 #

select CH.Cht from CH
if @@error<>0
begin
select CH.Cht from CH where CH.Cht > 9000
end
ava
Injener | 01.11.2006, 19:34 #
Что-то я не очень понял как это работает :( .
Тот пример, который я привел, это не то что мне необходимо. Я его привел для простоты. У меня есть два множества сформированные оператором select. Мне необходимо, выбрать те элементы первого множества которые не входят во второе множество с определенными условиями??? :stena :stena smile
А как быть с другими операциями этого класса (UNION | INTERSECT)?
ava
kobra | 01.11.2006, 19:49 #
если правилно понял вопрос, то

SELECT ID, Name
FROM (SELECT ID, Name FROM Table1) T1
WHERE T1.ID NOT IN (SELECT ID FROM Table2)
ava
Vit | 01.11.2006, 22:00 #
Цитата (Injener @ 1.11.2006, 10:34 findReferencedText)
Что-то я не очень понял как это работает .

Тот пример, который я привел, это не то что мне необходимо. Я его привел для простоты. У меня есть два множества сформированные оператором select. Мне необходимо, выбрать те элементы первого множества которые не входят во второе множество с определенными условиями???

А как быть с другими операциями этого класса (UNION | INTERSECT)?



Аааа... вот оно что, я подумал что имеется ввиду система отлова исключительных ситуаций (exception) - ошибок


А в вашем случае или как Кобра сказал или при помощи left outer join:


select *
from Table1
left outer join Table2 on Table1.id=Table2.id and Table2.cht>9000
where Table2.id is null



Прошу прощения за корявый пример, так как трудно на вашем примере что-то толковое показать, ибо он заменяется на простой запрос типа



select CH.Cht from CH where CH.Cht <= 9000


ava
Injener | 01.11.2006, 22:39 #
kobra, спасибо! Это именно то что мне необходимо.

И все таки, из любопытства что же с операциями (UNION | INTERSECT | EXCEPT)? Как например объединить два множества?
ava
kobra | 02.11.2006, 09:06 #
Цитата (Injener @ 1.11.2006, 22:39 findReferencedText)
Как например объединить два множества?


SELECT ID, Name
FROM Table1
UNION
SELECT ID, Name
FROM Table2

а вообше то, сходи по этои ссылке
ava
Injener | 02.11.2006, 21:45 #
Спасибо!!!
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
  Vit   kobra   Injener
advanced
Отправить