Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
14-1127800162
Тульский
2005-09-27 09:49
2005.10.16
Как заставить продавца соблюдать закон?


2-1126723197
_root
2005-09-14 22:39
2005.10.16
Глобальная заморочка


14-1127397129
Prohodil Mimo
2005-09-22 17:52
2005.10.16
Нужно ли уничтожать формы, если они не создаются при старте ?


1-1127383787
злобная танька
2005-09-22 14:09
2005.10.16
TClass


8-1116958075
ALL
2005-05-24 22:07
2005.10.16
Графическое построение схем




   Наверх