коррелированный запрос

epbylat
Дата: 20.11.2009 07:29:57
имеется таблица в ней два поля с полями
T_OBJECTID T_ATTRID
1) 4198 8507
2) 95347 4198
3) 95347 1010204
4) 1010204 4427
5) 1010204 4198

задача вытащить все ID в обоих полях для определенного ID который задается параметром
то есть например для ID - 1010204 это будет:
4427 (строка 4)
4198 (строка 5)
8507 (строка 1 он связан с 4198 а тот уже с нужным нам ID)
95347 (строка 2 он связан с 4198 а тот уже с нужным нам ID)
95347 (строка 3)
В принципе такое делается рекурсией, но можно ли сделать такое запросом, сам не могу додуматся как сделать и решил обратится за советом?
epbylat
Дата: 20.11.2009 07:31:03
блин извиняюсь форматирование структры съехало, но наверное понять можно.
epbylat
Дата: 20.11.2009 07:33:36
вот мои пока неудачные попытки :

SELECT * FROM dobjlink_dbt 
WHERE t_objecttype = 3 AND t_attrtype = 3 
AND t_attrid = 1010204
AND t_objectid IN 
     (SELECT t_objectid FROM dobjlink_dbt WHERE t_objecttype = 3 AND t_attrtype = 3 
      UNION 
      SELECT t_attrid FROM dobjlink_dbt WHERE t_objecttype = 3 AND t_attrtype = 3)
connect_by
Дата: 20.11.2009 07:59:20
epbylat,

select * from dobjlink_dbt where ... connect by prior t_objectid = t_attrid
Elic
Дата: 20.11.2009 08:30:49
epbylat
В принципе такое делается рекурсией, но можно ли сделать такое запросом?
RTFM Hierarchical Queries (FAQ)
adamov.e
Дата: 20.11.2009 14:01:58
Elic, connect_by,

Спасибо, пошел читать и курить. :)
suPPLer
Дата: 20.11.2009 15:05:33
adamov.e,

если Вы используете Oracle 11gR2 DB, то ещё вот это почитайте: Oracle® Database SQL Language Reference: SELECT - subquery_factoring_clause.