2013-10-02 74 views
-5

我需要遍歷查詢中的列值。使用列中的值來運行SELECT語句Oracle

Table1 
index value 

1, Nice 
2, School 
3, Day 

Table2 
index parent money 

1, John, 100 
2, Mary, 200 
3, Mark, 300 

僞代碼:

FOR all values in Table1 
    SELECT parent, function(value) 
    from Table2 

主要問題就出在這個函數,其中我只能一次插入一個值。

+1

你有什麼問題? – Chris

+0

我在與語法或方法麻煩,我會用 – user1440675

+0

不表2的結構是什麼樣子? – Chris

回答

3

這確實僞代碼問什麼:

SELECT 
    Table2.parent, 
    MyFunction(Table1.value) AS function_value 
FROM Table2 
CROSS JOIN Table1 

鑑於你的樣本數據,這個查詢的結果將是:

PARENT FUNCTION_VALUE 
------ --------------------------- 
John value of function('Nice') 
Mary value of function('Nice') 
Mark value of function('Nice') 
John value of function('School') 
Mary value of function('School') 
Mark value of function('School') 
John value of function('Day') 
Mary value of function('Day') 
Mark value of function('Day') 

這是因爲查詢調用函數每一行Table1加入每行Table2。如果Table1中有8行,Table2中有10行,則會得到80個結果(8 x 10)。如果您在每個表格中有1,000行,您將獲得100萬個結果(1,000 x 1,000)。

如果每個表中的Index列用於涉及行,試試這個:

SELECT 
    Table2.parent, 
    MyFunction(Table1.value) AS function_value 
FROM Table2 
JOIN Table1 ON Table2.index = Table1.index 

有了您的樣本數據,從該查詢的結果將是:

PARENT FUNCTION_VALUE 
------ --------------------------- 
John value of function('Nice') 
Mary value of function('School') 
Mark value of function('Day') 

如果沒有這些查詢可以做你所需要的,請提供樣本結果。

+0

我建議創建一個[SQLFiddle](http://www.sqlfiddle.com/#!4/9c893/2)=) – lebolo