2015-11-04 88 views
0

我試圖編寫一個OSQL查詢來計算所有節點對之間的最短路徑的長度,但由於在FROM子句中有多個類是不允許的,所以我想知道我如何循環遍歷所有不同的節點對。OrientDB:所有對最短路徑

我試圖與此查詢:

SELECT shortestPath($current, $e0, 'BOTH', 'Meets') 
FROM Employee 
LET $e0 = (SELECT FROM Employee where $current.nt_account > $parent.nt_account) 

nt_account是僱員ID)。

當我嘗試執行查詢,我得到了以下錯誤:

java.lang.IllegalArgumentException: Vertex id can not be null 

任何人可以幫助我嗎?

乾杯!

回答

0

嘗試此查詢

select from (select $b.shortestPath from Employee let $b= (SELECT shortestPath($parent.current,@this, 'BOTH', 'Meets') from Employee)) unwind $b 
+0

它的運行,我的數據集是相當大的,因此會需要一些時間。如果我可能會問:'$ parent'和'$ parent.current'之間有什麼不同?並從'$ current'和'@ this'?在此先感謝:) – Alberto

+0

在這種情況下,我認爲使用$ current或@this沒有區別。 關於$ parent和$ parent。$ current你可以看看這個鏈接http://orientdb.com/docs/2.1/SQL-Traverse.html#context –

+0

完美!非常感謝。 – Alberto