Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Except в MS SQL Server, какой синтаксис 
V
    Опции темы
Injener
Дата 1.11.2006, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 6.10.2006
Где: СПб

Репутация: нет
Всего: 1



В 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'.
--------------------
Любое дело можно сделать тремя способами:1) правильно2) неправильно3) и так как это делают в армии
PM MAIL   Вверх
Vit
Дата 1.11.2006, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 5
Всего: 207



Код

select CH.Cht from CH
if @@error<>0
  begin
    select CH.Cht from CH where CH.Cht > 9000
  end



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Injener
Дата 1.11.2006, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 6.10.2006
Где: СПб

Репутация: нет
Всего: 1



Что-то я не очень понял как это работает smile .
Тот пример, который я привел, это не то что мне необходимо. Я его привел для простоты. У меня есть два множества сформированные оператором select. Мне необходимо, выбрать те элементы первого множества которые не входят во второе множество с определенными условиями??? smile  smile  smile 
А как быть с другими операциями этого класса (UNION | INTERSECT)?
--------------------
Любое дело можно сделать тремя способами:1) правильно2) неправильно3) и так как это делают в армии
PM MAIL   Вверх
kobra
Дата 1.11.2006, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 5
Всего: 9



если правилно понял вопрос, то
Код

SELECT ID, Name
FROM (SELECT ID, Name FROM Table1) T1
WHERE T1.ID NOT IN (SELECT ID FROM Table2) 


Это сообщение отредактировал(а) kobra - 1.11.2006, 19:53
PM MAIL   Вверх
Vit
Дата 1.11.2006, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 5
Всего: 207



Цитата(Injener @  1.11.2006,  10:34 Найти цитируемый пост)
Что-то я не очень понял как это работает  .
Тот пример, который я привел, это не то что мне необходимо. Я его привел для простоты. У меня есть два множества сформированные оператором 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





--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Injener
Дата 1.11.2006, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 6.10.2006
Где: СПб

Репутация: нет
Всего: 1



kobra, спасибо! Это именно то что мне необходимо. 

И все таки, из любопытства что же с операциями (UNION | INTERSECT | EXCEPT)? Как например объединить два множества?
--------------------
Любое дело можно сделать тремя способами:1) правильно2) неправильно3) и так как это делают в армии
PM MAIL   Вверх
kobra
Дата 2.11.2006, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 5
Всего: 9



Цитата(Injener @  1.11.2006,  22:39 Найти цитируемый пост)
Как например объединить два множества?

Код

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

а вообше то, сходи по этои ссылке
PM MAIL   Вверх
Injener
Дата 2.11.2006, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 6.10.2006
Где: СПб

Репутация: нет
Всего: 1



Спасибо!!!
--------------------
Любое дело можно сделать тремя способами:1) правильно2) неправильно3) и так как это делают в армии
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0746 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.