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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Oracle]Исключить данные из запроса 
V
    Опции темы
Anime
Дата 20.4.2016, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 88
Регистрация: 13.11.2006
Где: Киев

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



Тестовые данные
Код

CREATE TABLE A_DATA_TEST 
(
    ID VARCHAR2(20 BYTE), 
    NAME VARCHAR2(20 BYTE), 
    KOD1 VARCHAR2(20 BYTE), 
    KOD2 VARCHAR2(20 BYTE) 
);

Insert into A_DATA_TEST (ID,NAME,KOD1,KOD2) values ('1','world','100','900');
Insert into A_DATA_TEST (ID,NAME,KOD1,KOD2) values ('2','hello','900','100');
Insert into A_DATA_TEST (ID,NAME,KOD1,KOD2) values ('3','bey','900','800');
Insert into A_DATA_TEST (ID,NAME,KOD1,KOD2) values ('4','world','100','900');
Insert into A_DATA_TEST (ID,NAME,KOD1,KOD2) values ('5','what','300','100');

CREATE TABLE A_SPRAV_TEST (    
    KOD VARCHAR2(20 BYTE)
);

Insert into A_SPRAV_TEST (KOD) values ('100');
Insert into A_SPRAV_TEST (KOD) values ('200');
Insert into A_SPRAV_TEST (KOD) values ('300');
Insert into A_SPRAV_TEST (KOD) values ('400');
Insert into A_SPRAV_TEST (KOD) values ('500');
 

Запрос
Код

select * from a_data_test
where exists (select 1 from a_sprav_test where kod in (kod1, kod2))


Вывод
Код

ID    NAME        KOD1 KOD2
1    world    100      900
2    hello            900      100
4    world    100      900
5    what            300      100


Как можно исключить записи если KOD1 и KOD2 присутствует в таблице A_SPRAV_TEST.
Должно (без записи ID=5, эти коды(kod1, kod2) есть в справочнике )
Код

ID    NAME        KOD1 KOD2
1    world    100      900
2    hello            900      100
4    world    100      900

PM   Вверх
Akina
Дата 20.4.2016, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 453



Код

FROM A_DATA_TEST t1
LEFT JOIN A_SPRAV_TEST t2 ON t1.KOD1 = t2.KOD
LEFT JOIN A_SPRAV_TEST t3 ON t1.KOD2 = t3.KOD
WHERE COALESCE(t2.KOD, t3.KOD) IS NULL 
 smile 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
LSD
Дата 21.4.2016, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15709
Регистрация: 24.3.2004

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




M
LSD
Необходимо указывать СУБД(и, желательно, версию), чтоб не были даны ответы, которые для Вашей СУБД будут просто неприменимы.



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




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


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

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