Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Движения по связям (на подобие дерева) / 8 сообщений из 8, страница 1 из 1
27.04.2017, 07:55
    #39445159
VicSO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Движения по связям (на подобие дерева)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with TAB1 as ( select 99991 as id,  5 as qty from dual union all
               select 99992 as id, 10 as qty from dual union all
               select 99993 as id, 15 as qty from dual
          ),
   TAB2 as (select  77771 as id, 'doc3'   as name,           88881 as p_id from dual union all
            select  88881 as id, 'order'  as name,               2 as p_id from dual union all
            select      2 as id, 'doc1'   as name,               3 as p_id from dual union all
            select      3 as id, 'doc2'   as name,           99991 as p_id from dual union all
            select  88882 as id, 'order'  as name,               8 as p_id from dual union all
            select  88883 as id, 'order'  as name,               8 as p_id from dual union all
            select      8 as id, 'order'  as name,               9 as p_id from dual union all
            select      9 as id, 'doc1'   as name,              10 as p_id from dual union all
            select     10 as id, 'doc2'   as name,           99992 as p_id from dual
          )



нужно получить все что в таблице TAB1 и TAB2 id
не могу сообразить как сделать, то есть берем ID из TAB1 и подымаемся до тех пор пока не будет name 'order'
могут встречаться циклы.
...
Рейтинг: 0 / 0
27.04.2017, 09:37
    #39445210
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Движения по связям (на подобие дерева)
VicSOнужно получить все что в таблице TAB1 и TAB2 id
left join
VicSOи подымаемся до тех пор пока не будет
Куда подымаемся? На Эверест?
VicSOмогут встречаться циклы.
Здесь водятся драконы..

С таким подходом, ты слона не продашь. Учись формулировать и приведи пример желаемого результата на этих данных.
...
Рейтинг: 0 / 0
27.04.2017, 09:38
    #39445211
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Движения по связям (на подобие дерева)
env,

отдел телепатии просил передать, что в хрустальном шаре они увидели connect by
...
Рейтинг: 0 / 0
28.04.2017, 07:00
    #39445819
VicSO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Движения по связям (на подобие дерева)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
with TAB1 as ( select 99991 as id,  5 as qty from dual union all
               select 99992 as id, 10 as qty from dual union all
               select 99993 as id, 15 as qty from dual
          ),
   TAB2 as (select  77771 as id, 'doc3'   as name,           88881 as p_id from dual union all
            select  88881 as id, 'order'  as name,               2 as p_id from dual union all
            select      2 as id, 'doc1'   as name,               3 as p_id from dual union all
            select      3 as id, 'doc2'   as name,           99991 as p_id from dual union all
            select  88882 as id, 'order'  as name,               8 as p_id from dual union all
            select  88883 as id, 'order'  as name,               8 as p_id from dual union all
            select      8 as id, 'order'  as name,               9 as p_id from dual union all
            select      9 as id, 'doc1'   as name,              10 as p_id from dual union all
            select     10 as id, 'doc2'   as name,           99992 as p_id from dual
          ),
    TAB3 as ( select  88881 as id,  5 as qty1 from dual union all
              select  88882 as id, 10 as qty1 from dual union all
              select  88883 as id, 11 as qty1 from dual union all
          ) 


получить нужно
Код: sql
1.
2.
3.
88881,5  qty1, 99991 ,5  qty
88882,10 qty1, 99992 ,10 qty
88883,11 qty1, 99992 ,10 qty



Код: sql
1.
2.
3.
4.
5.
SELECT id, CONNECT_BY_ROOT p_id p_id
                      FROM TAB2
                     WHERE name = 'order' AND CONNECT_BY_ISLEAF = 1
                START WITH p_id = (вот как сюда подставлять данные из TAB1 (она большая и на нее могут накладываются еще дополнительные фильтра (Дата)))
                CONNECT BY NOCYCLE PRIOR p_id = id
...
Рейтинг: 0 / 0
28.04.2017, 10:14
    #39445899
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Движения по связям (на подобие дерева)
VicSO,

with p_id in (select id from tab1 where ...) - не пробовал ещё?
...
Рейтинг: 0 / 0
02.05.2017, 08:18
    #39447023
VicSO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Движения по связям (на подобие дерева)
env,

with p_id in (select id from tab1 where ...) а как туда динамические параметры записывать тогда?
у меня в итоге вьюха должна получится.
если тупа with p_id in (select id from tab1) но это тогда будет вытаскивать все данные из таблице :(
и тут вопрос как отреагирует оракла, если tab1 еще потом дальше цепляться будет, так как нужно будет вывести поля.
...
Рейтинг: 0 / 0
02.05.2017, 08:36
    #39447026
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Движения по связям (на подобие дерева)
VicSOа как туда динамические параметры записывать тогда?
у меня в итоге вьюха должна получится http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
02.05.2017, 12:36
    #39447246
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Движения по связям (на подобие дерева)
VicSOа как туда динамические параметры записывать тогда

Может тогда уж полную постановку задачи нормально опишешь?

А то потом снова что-нибудь "такое же, только с перламутровыми пуговицами" вспомнишь.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Движения по связям (на подобие дерева) / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]