Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как вытащить объект, сославшись на его часть?  [new]
Andrey1963
Member

Откуда:
Сообщений: 74
Доброго времени суток всем!
Да простят меня модераторы, ответ больше нужен для Firebird, но вдруг повезет.

Операции с объектами
create table avt_t1 (id_key integer,id_key3 integer,id_key1 integer,id_object integer)
Доп информация по определенной ветке
create table avt_t2 (id_key3 integer,priznak integer, f1 integer)

есть еще и другие таблицы, но они не обязательны (оставил ссылочку id_key1)
Если бы была таблица объектов, то все было бы просто. Но ее нет.

insert into avt_t2 values (1,1,123)
insert into avt_t2 values (2,5,548)
insert into avt_t2 values (3,98,548)
insert into avt_t2 values (4,57,587)
insert into avt_t1 values (1,1,null,1)
insert into avt_t1 values (2,2,null,1)
insert into avt_t1 values (3,3,null,1)
insert into avt_t1 values (4,4,null,1)
insert into avt_t1 values (5,null,1,2)

Указанный ниже select возвращает нужные записи (указываю priznak=5 и он возвращает все записи по объекту 1):

select * from avt_t1 a, avt_t2 b where a.id_key3=b.id_key3 and a.id_object in
(select distinct id_object from avt_t1 a,avt_t2 b
where a.id_key3=b.id_key3 and b.priznak=5)

Как можно сделать иначе, желательно в синтаксисе ANSI-SQL?
На больших объемах жуткий тормоз.

С уважением, Андрей.
11 окт 07, 06:14    [4781987]     Ответить | Цитировать Сообщить модератору
 Re: Как вытащить объект, сославшись на его часть?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Andrey1963
..На больших объемах жуткий тормоз.

С уважением, Андрей.

Ну дык тюнить надо. (например, индексировать).
Вы жеж сами в ответе, за то, что понаписАли..
11 окт 07, 12:40    [4783573]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить