Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Запрос на выборку в MSSQL!!!!!!

16K
23 августа 2007 года
Rezus666
46 / / 15.08.2007
 
Код:
SELECT    MODUSL.KUSL, [Table].KUSL AS Expr1
FROM      MODUSL CROSS JOIN [Table]
WHERE     MODUSL.KUSL != [Table].KUSL

Помогите, мне нужно чтобы запрос выбирал все не совподающие записи сравнивая две таблицы, т.е. если в одной таб. записи: 1,2,3,4,5, а в другой 2,5,1,3,4,6,8, то запрос должен выбрать 6,8. Выше описанный код не верен он как я понимаю сравнивает по строкам, как его можно исправить?
12K
23 августа 2007 года
__AleXX__
133 / / 02.04.2007
Приведи пож. какие у тя таблицы, ключи, и что именно надо выбрать,
а не просто вырванный кусок запроса.

Как то сложно по нему догадаться о структуре.
16K
23 августа 2007 года
Rezus666
46 / / 15.08.2007
 
Код:
SELECT [Table].KUSL, [Table].TITLE
FROM [Table] LEFT JOIN KUSL ON [Table].KUSL = MODUSL.KUSL
WHERE (((MODUSL.KUSL) Is Null));

Вот запрос,помоему я на верном пути только есть ERR:
Сообщение 208, уровень 16, состояние 1, строка 1
Недопустимое имя объекта "KUSL"
Работаю с 2 таб. Table и MODUSL
таб-цы не связаны,поля(столбцы):
KUSL nvarchar(7)
TITLE nvarchar(60)
TS decimal(38, 32)
UET float Checked
VIDOPL_ID int
FULLTITLE nvarchar(250)
BASETS decimal(38, 32)
структура таб-ц одинаковая,
нужно выбрать те записи из [Table].KUSL которых нет в MODUSL.KUSL
16K
23 августа 2007 года
Rezus666
46 / / 15.08.2007
:) :) Усе, получилось!!!!!!!!:) :)
 
Код:
SELECT   [Table].KUSL, [Table].TITLE, MODUSL.KUSL AS Expr1
FROM     MODUSL RIGHT OUTER JOIN [Table] ON MODUSL.KUSL = [Table].KUSL
WHERE   (MODUSL.KUSL IS NULL
12K
23 августа 2007 года
__AleXX__
133 / / 02.04.2007
Можно было ещё так:

 
Код:
SELECT [Table].KUSL, [Table].TITLE
FROM [Table], MODUSL
WHERE [Table].KUSL not in (SELECT MODUSL.KUSL FROM MODUSL);


если я не затупил :)) проверить сейчас негде.
16K
23 августа 2007 года
Rezus666
46 / / 15.08.2007
Цитата: __AleXX__

 
Код:
SELECT [Table].KUSL, [Table].TITLE
FROM [Table], MODUSL
WHERE [Table].KUSL not in (SELECT MODUSL.KUSL FROM MODUSL);


Нет это что-то не то, впринцепе работает правельно,но одну и туже запись выберает несколко раз.
Вопрос на "засыпку";) чем мжно перекодировать из *.dbf в *.db? ни один из установленных у меня редакторов этого не могут.:mad:

12K
23 августа 2007 года
__AleXX__
133 / / 02.04.2007
попробуй прогнать через MS Access
16K
23 августа 2007 года
Rezus666
46 / / 15.08.2007
Спасибо,прокатило.
Все отключась пора домой.
Ещё раз спасибо
350
25 августа 2007 года
cheburator
589 / / 01.06.2006
Оба приведенных запроса:
 
Код:
SELECT [Table].KUSL, [Table].TITLE
FROM [Table], MODUSL
WHERE [Table].KUSL not in (SELECT MODUSL.KUSL FROM MODUSL);

и
 
Код:
SELECT   [Table].KUSL, [Table].TITLE, MODUSL.KUSL AS Expr1
FROM     MODUSL RIGHT OUTER JOIN [Table] ON MODUSL.KUSL = [Table].KUSL
WHERE   (MODUSL.KUSL IS NULL)

для вашего конкретного случая, может, и правильно работают, но в общем случае ошибочны.
Например, если записи есть в MODUSL, но их нет в [Table], они не будут выбраны (что требовалось по условию задачи).
Думаю, правильнее будет так:
 
Код:
SELECT   IF ([Table].KUSL IS NULL) THEN MODUSL.KUSL ELSE [Table].KUSL AS KUSL
FROM     MODUSL FULL JOIN [Table] ON MODUSL.KUSL = [Table].KUSL
WHERE   (MODUSL.KUSL IS NULL OR [Table].KUSL IS NULL)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог