Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: CL | DM;

Вниз

Соединение таблиц на основе НЕвхождения   Найти похожие ветки 

 
B   (2005-09-01 15:11) [0]

Такой вопрос наверняка всплывал много раз, но не знаю как искать...

Задача - получить записи, которые НЕ входят в подзапрос:

Select T.*
from BASE1 T,(SELECT ttt.text bas_text, ttt.id bas_id
                     FROM o_tree ttt
                     CONNECT BY ttt.owner_id = PRIOR ttt.id
                     START WITH ttt.id = 288007) tree


Если задать
where T.id IN bas_id
все нормально - возвращаются только строки, входящие в позапрос

Если задать
where T.id NOT IN bas_id
В ответ возвращается сонмище строк, кажется, оно называется Декартовым.


 
DenK_vrtz ©   (2005-09-01 15:16) [1]

Использовать NOT EXISTS


 
Виталий Панасенко   (2005-09-01 15:18) [2]

Это MS SQL ? С им не работал, но в стандарте вроди так
select * from table where id not in (select id from table2 where ...)


 
B   (2005-09-01 16:54) [3]

Это Oracle...
Он так тоже позволяет, результат будет тем же
Но в силу того, что надо проверять и другие данные из позапроса приходится писать его в FROM

NOT EXISTS не помог :(

Выражение
elect distinct T.*
from Base1 T
where exists (SELECT ttt.text bas_text, ttt.id bas_id
                     FROM o_tree ttt
                     CONNECT BY ttt.owner_id = PRIOR ttt.id
                     START WITH ttt.id = 288007)

вернуло то же что и IN,

а если заменить на NOT EXISTS, вообще ничего не возвращает :(


 
Desdechado ©   (2005-09-01 17:05) [4]

в Оракле есть в SELECT такая хитрая опция MINUS - не оно ли это?


 
ANB ©   (2005-09-01 17:18) [5]


> B   (01.09.05 16:54) [3]

1. Читать в справке описание not exists
2. Тут лучше not in


 
B   (2005-09-01 17:20) [6]

Спасибо.
MINUS, похоже, подошел.


 
Val ©   (2005-09-01 17:25) [7]

может что-то типа этого:

Select T.*
from BASE1 T
where not exists (SELECT 1
                       FROM o_tree ttt
                       where ttt.id = t.id
                       CONNECT BY ttt.owner_id = PRIOR ttt.id
                       START WITH ttt.id = 288007) tree


 
Fay ©   (2005-09-01 18:06) [8]

B   (01.09.05 17:20) [6]
Oracle, что-ли? Надо сразу говорить.



Страницы: 1 вся ветка

Текущий архив: 2005.10.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.049 c
14-1127212706
pazitron_brain
2005-09-20 14:38
2005.10.16
шкс,


1-1127887687
tytus
2005-09-28 10:08
2005.10.16
Как в StringGrid-e рисовать перевернутый текст на 90 градусов?


14-1127660413
alsov
2005-09-25 19:00
2005.10.16
Форма без заголовка, с возможностью ресайза


3-1125819104
suharew
2005-09-04 11:31
2005.10.16
Как добавить время


4-1124203470
s999
2005-08-16 18:44
2005.10.16
TranslateMessage и VK_HOME, VK_END...