2015-12-18 60 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

我不明白你想做什么exacly。你是否试图将两个表合并为一个,其中项目类型是相互放置的? –

+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

现货,这是我想要的。非常感谢genious –