2017-06-05 53 views
1

我有2个表看起来像:Oracle子查询 - 如何?

GL_ROLLUP 
Responsibility Responsibility_L3 
15500    15B 
15445    15C 
15515    15B 
15494    15C 
15600    15D 

GL_Detail 
Responsibility Expense  Amount 
15500    6501   30.51 
15445    6508   75.60 
15515    6535   45.68 
15494    6508   65.50 
15600    6505   84.39 

我的查询现在是拉动从GL_Detail表中的数据;然而,我希望能够到期的是使用GL_ROLLUP中的搜索参数Responsibility_L3,以便我可以查询此卷起值中的所有职责(而不是执行范围或“='15500'或.....”) 。我尝试了几次,但我的查询似乎卡住了,并且从未将数据返回。

任何帮助将不胜感激!

+0

提示:'INNER JOIN'。 –

+0

您正在描述性能问题,不一定是查询正确性问题。熟悉“解释计划”,索引和其他性能调整方法。另外,如果你显示你的查询“卡住”,我们至少可以看到你所尝试的那个不起作用。 –

回答

1
SELECT d.Responsibility, r.Responsibility_L3, d.Expense, d.Amount 
FROM GL_Detail d LEFT JOIN GL_ROLLUP r ON r.Responsibility = d.Responsibility 
ORDER BY Responsibility_L3 

这是否让你找到你想要的东西?

+0

您正在描述性能问题,不一定是查询正确性问题。熟悉“解释计划”,索引和其他性能调整方法。另外,如果你显示你的查询“卡住”,我们至少可以看到你所尝试的那个不起作用。 –

+0

您对答案发表了评论,而不是问题。只是让你知道! – SandPiper

+0

thx。老狗可以学习新的技巧。 –

0

所需的查询是一个简单的:

select d.responsibility 
     , d.expense 
     , d.amount 
from GL_ROLLUP r 
    inner join GL_Detail d 
      on d.responsibility = r.responsibility 
where r.responsibility_l3 = :l3_search_param -- use appropriate notation 

“我的查询似乎卡住,永远不会带来数据传回”

如果上面的查询遭受了同样的命运,这是性能问题。您将需要发布解释计划,数据量细节,索引等。