2015-11-04 2 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 является Employee ID).

При попытке выполнить запрос, я получаю следующее сообщение об ошибке:

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

Может кто-нибудь мне помочь?

Cheers!

ответ

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

Смежные вопросы