2015-12-18 3 views
0

В моей базе данных Oracle 11g у меня есть две таблицы. Первый, accitem, содержит информацию о позиции, а второй, acchart содержит информацию о графике. Каждая строка в таблице accitem уникальна. Повторений нет. В другой таблице acchart item_type ссылается на внешний ключ в таблице acchart. Это выглядит примерно так:Иерархический запрос на основе двух таблиц,

Accitem 
ID   Details 
BS   Balance sheet 
PL   Profit & loss 

acchart 

item_code item_description  item_type 
INC   Income     PL 
EXP   Expenses    PL 
Ass   Assets     BS 
Eqt   Equity     BS 

То, что я хочу достичь следующим образом:

Balance Sheet 
    + Assets 
    + Equity 

Profit & Loss 
    + Income 
    + Expenses 

Как бы вы достичь этого?

+0

Я не понимаю, что именно вы пытаетесь сделать. вы пытаетесь объединить две таблицы в одну, где типы предметов ставятся друг с другом? –

+0

Можете ли вы дать операторы DDL для таблиц, некоторые примеры данных ** И ** ваш ожидаемый результат для этих данных? – MT0

+1

Это простое соединение .. но тогда вы показываете его как отступы .. так, может быть, подключиться? – Randy

ответ

0

Вы действительно можете использовать connect by:

select decode(level, 2, ' + ', '')||q.name from 
(
select ID, Details name, null parent_id 
from accitem 
UNION ALL 
select null ID, item_description name, item_type parent_id 
from acchart 
) q 
start with parent_id is null 
connect by prior id = parent_id 

Его производительность сомнительна на больших наборах данных, хотя.

+0

пятно на, это то, что я хотел точно. Большое спасибо, гениальный –

Смежные вопросы