2017-03-16 69 views
0

我是這個論壇的新成員,我會知道是否有可能快速獲得有關Oracle環境的SQL查詢的幫助。Sql query(selfjoin)

我有例如,這下面的查詢:

SELECT table3.numero 
FROM table1 table1 
    INNER JOIN table2 ON table2.id = table1.tbl1_id 
    INNER JOIN table3 ON table3.id = table2.tbl2_id; 

我想基礎上的場稱爲選擇現有價值添加新條件以顯示選擇(table3.numero)同場在table1中。

options字段包含混合值(null和table1.id)。這些值之間有一個聯繫。 options字段中的Table1.id表示具有null值的記錄的table1.id。我們可以認爲具有空值的記錄是具有不同於空值的記錄的父項。

所以,我的問題是要知道是否有可能添加選擇另一個table3.numero將代表家長記錄值和另一個兒童記錄值。

我不知道如何做這個查詢。

感謝您的幫助。

爲表1

id  options 
------ ------- 
151515 151516 
151516 
151517 
151518 151517 

表3

numero 
------ 
4333 
2452 
4245 
1121 

table3.numero(父母= table1.option爲null)

8844 
5515 
1518 
1444 

table3.numero(測試數據孩子=>表1 .option)

8789 
5454 
3654 
2114 
+1

添加一些示例數據,您的要求不明確。 – Stephen

+2

簡而言之,它很有可能,但你需要更精確。顯示數據示例和期望輸出示例 – Jonny

+0

像這樣的查詢例如: SELECT table3.numero,table3.numero(parent),table3.numero(children) FROM table1 table1 INNER JOIN table1 table12 ON table12.id = table1 .id和table1.options爲null(父母)和table1.options = table1.id(包含父母記錄的id) –

回答

0

我想我明白你的意思。我創建了它聽起來像你的樣本。

表1

id  options 
151515 151516 
151516 
151517 
151518 151517 

表3

id  numero 
151515 8789 
151516 8844 
151517 5515 
151518 5454 

結果

id  numero parent child 
151515 8789 8844 8789 
151518 5454 5515 5454 

查詢使用

SELECT T3.ID,T3.NUMERO,T3_PARENT.NUMERO PARENT,T3.NUMERO CHILD 
FROM TABLE1 T1 
JOIN TABLE3 T3 ON T1.ID=T3.ID AND T1.OPTIONS IS NOT NULL 
JOIN TABLE3 T3_PARENT ON T3_PARENT.ID=T1.OPTIONS 
+0

非常感謝你hewills。我想這就是我想要做的。我將在明天上午嘗試它,如果它給了我期望的結果,我會保持聯繫。 –