簡體   English   中英

具有動態層次結構的SQL“連接依據”

[英]SQL “Connect By” with a Dynamic Hierarchy

我試圖在通過ID(即head_id,tail_id)將層次結構中的頭與尾相關聯的表上使用“ connect by”。 這個簡單的查詢將並且確實有效:

select head_id, tail_id  
from links  
start with head_id = :1  
connect by prior tail_id = head_id  

但是,tail_id並不總是准確的,因此我創建了一個函數來返回正確的tail_id,即“ get_latest_id(id)”。 我認為此更新的查詢將起作用:

select head_id, tail_id, get_latest_id(tail_id) as latest_tail_id  
from cms_links  
start with head_id = :1  
connect by prior latest_tail_id = head_id;  

但這會引發錯誤“ ORA-00904:“ LATEST_TAIL_ID”:無效的標識符”

我的目標是在子行中將父行的更正tail_id與head_id相關聯。 如果我正確理解了Oracle文檔,則意味着我必須在“ connect by”子句中使用“ prior”。

我的目標可以通過“ connect by”實現嗎? 如果是這樣,正確的語法是什么?

任何提示或建議,將不勝感激。

麥可

正如注釋中提到的那樣,您不能在connect by中使用select的列別名。 您將需要在connect by再次調用該函數:

connect by prior get_latest_id(tail_id) = head_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM