在我的OrientDB数据库中,我有一个文档类A,它有4个字段和一个关系:
我需要选择具有终端设置的所有元素的根元素的来源。一个例子是:
我需要得到的是: 终端: no1 ,来源:测试
我现在能做的就是获取所有来源,但我不知道他们属于哪个终端:
SELECT source FROM (TRAVERSE A.Rel FROM (SELECT FROM A WHERE terminal IS NOT NULL) WHILE $depth <= 99) WHERE parentId IS NULL
我尝试使用LET
,但无法按照我想要的方式运行。
修改
从一个
中选择orientdb {GratefulDeadConcerts}> select from A
----+-----+----+--------+------+--------+-----
# |@RID |id |terminal|source|parentId|Rel
----+-----+----+--------+------+--------+-----
0 |#15:0|1 |null |test |null |null
1 |#15:1|2 |null |null |1 |#15:0
2 |#15:2|3 |null |null |2 |#15:1
3 |#15:3|4 |no1 |null |3 |#15:2
4 |#15:4|5 |null |null |4 |#15:3
----+-----+----+--------+------+--------+-----
首先尝试使用LET
orientdb {GratefulDeadConcerts}> SELECT source, $terminal FROM ( TRAVERSE A.Rel FROM ( SELECT FROM A WHERE terminal IS NOT NULL LET $parent.$parent.$terminal = terminal ) ) WHERE parentId IS NULL
----+-----+------
# |@RID |source
----+-----+------
0 |#-2:1|test
----+-----+------
答案 0 :(得分:1)
试试这个(抱歉没有数据库可能很难)
SELECT source, $terminal FROM (
TRAVERSE A.Rel FROM (
SELECT FROM A WHERE terminal IS NOT NULL LET $parent.$parent.$t = terminal
) WHILE parentId IS NOT NULL
) WHERE parentId IS NULL