有人可以解釋使用nocycle並通過根分句在oracle中的分層查詢連接,當我們不使用'開始'時,我們得到行的順序是什麼,我的意思是當我們不要用「開始」,我們得到很多很多行,可以爲任何人的幫助oracle分級查詢nocycle並通過根連接
2
A
回答
6
解釋NOCYCLE和根連接(如何不同於下手?)使用簡單的表emp,謝謝如果你的數據有環(A - > B - > A - > B ...),如果您執行分層查詢,Oracle將拋出一個異常,ORA-01436: CONNECT BY loop in user data
。即使存在這樣的循環,NOCYCLE
也會指示Oracle返回行。
CONNECT_BY_ROOT
爲您提供對根元素的訪問權限,甚至可以在查詢中查找幾個圖層。使用HR模式:
select level, employee_id, last_name, manager_id ,
connect_by_root employee_id as root_id
from employees
connect by prior employee_id = manager_id
start with employee_id = 100
LEVEL EMPLOYEE_ID LAST_NAME MANAGER_ID ROOT_ID
---------- ----------- ------------------------- ---------- ----------
1 100 King 100
2 101 Kochhar 100 100
3 108 Greenberg 101 100
4 109 Faviet 108 100
...
在這裏,您看到我從員工100開始找到他的員工。運營商CONNECT_BY_ROOT
讓我可以訪問King的employee_id,甚至可以降低四級。起初這個操作員讓我感到非常困惑,認爲它意味着「通過根元素連接」或其他東西。可以把它看作「CONNECT BY子句的根源」。
0
這裏是關於nocycle在查詢中的使用。
假設我們有一個簡單的表 與r1和r2列名和B 和第二行R1爲 第一行R1 = A,R2 =值= B,R 2 =一個 現在我們知道一個指到b和b返回到a。 因此,有一個循環,並且如果我們寫一個分層查詢作爲
選擇R1從表名 與R1 =開始「A」 通過事先R2 = R1連接;
我們得到通過循環錯誤連接
因此使用NOCYCLE到允許甲骨文給出的結果,即使存在環路。
因此查詢 從表名選擇R1 與R1 =開始 'A' 通過NOCYCLE連接之前R2 = R1;
相關問題
- 1. 如何通過nocycle使用Oracle Connect
- 2. 通過指定根和葉節點的oracle分層查詢
- 3. XML直接通過查詢ORACLE db
- 4. Oracle分層查詢由父級子樹連接未知級別較深?
- 5. Oracle連接/查詢超時
- 6. SQL查詢連接表 - Oracle
- 7. oracle外連接查詢
- 8. Oracle查詢自連接?
- 9. 的Oracle SQL - 連接多個查詢通過日期
- 10. 通過VBScript連接到Oracle
- 11. 通過ODBC通過PHP連接到Oracle
- 12. 通過等級在子查詢中連接慢
- 13. Oracle組通過查詢
- 14. 通過連接表查詢Rails 4 Postgres
- 15. 通過左連接計算SQL查詢
- 16. 通過連接多列刪除查詢
- 17. 通過多個連接優化查詢
- 18. ActiveRecord的查詢通過多個連接
- 19. 通過psycopg2創建連接查詢
- 20. 根據參數過濾器查詢Oracle
- 21. 使用連接的分層查詢通過
- 22. 列出通過ado連接連接的所有查詢
- 23. Oracle連接優先級
- 24. Oracle SQL:通過在查詢中通過分隔符分割來提取數據
- 25. Oracle查詢鏈接查詢
- 26. oracle查詢使用','連接所有列
- 27. 關於Oracle連接的查詢
- 28. Oracle查詢到MySQL的左連接
- 29. 使用查詢刪除Oracle連接
- 30. Oracle SQL連接子查詢dblink
你好,非常感謝explaining..yes,但我仍然感到困惑中我們可以得到根元素「開始」條款過於不是嗎?我使用'start with employee_id = 102'進行了檢查,並認爲層次結構將以102開頭,但通過root連接將在此員工層次結構中將「100」作爲根。但是,root_id列給出了102,所以如果我們可以使用'start with'子句獲取根元素,爲什麼要使用connect_by_root。請再次向我解釋循環:(如果A是B的經理,那麼B又是A的經理,?我知道它的愚蠢,我沒有得到它,但請解釋,非常感謝您的幫助! – ratsy 2012-02-26 21:49:44
開始可以讓你定義遞歸的起始條件(通過在用作遞歸起點的節點上定義一個過濾器)CONNECT_BY_ROOT允許輸出屬於起始節點的列。 – 2012-11-26 14:28:31