2017-06-05 58 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 

「我的查詢似乎卡住,永遠不會帶來數據傳回」

如果上面的查詢遭受了同樣的命運,這是性能問題。您將需要發佈解釋計劃,數據量細節,索引等。