如何在 OrientDB 中合并两个查询的结果
How to merge results of two queries in OrientDB
假设我有 4 个顶点 类:V1、V2、V3、V4
还有 3 边 类: E1,E2,E3
然后它们的实例(可能)像这样连接:
V1 --E1--> V2
V2 --E2--> V3
V2 --E3--> V4
V3 --E3--> V4
所以,从图形上看是这样的:
V1---E1---V2
| \
E2 E3
| \
V3---E3---V4
按照上面显示的方向。
我现在对从 V1 到 V4 显示的确切边缘上的路径感兴趣(它们之间可能还有我们不知道的其他边缘,所以只有已经提到的边缘类型是可以的。)
检查是否存在从V1到V4的路径之一(如果路径存在则返回V4):
SELECT EXPAND(out('E1').out('E3')) FROM V1 WHERE id = <someIdThatV1Has>
检查其他路径是否存在(如果路径存在则返回V4):
SELECT EXPAND(out('E1').out('E2').out('E3')) FROM V1 WHERE id = <someIdThatV1Has>
我唯一感兴趣的是知道这两条路径中的一条是否存在。我想用一个查询来做到这一点。
问题
如何将这两个查询合并为一个查询以查明这两个路径之一是否存在?
(如果可能的话,将非常感谢关于如何在 OrientDB 中合并不同遍历查询的一般性答案以及明确的答案。)
谢谢!
试试 unionAll
select expand($c)
let $a = ( SELECT EXPAND(out('E1').out('E3')) FROM V1 WHERE id = <someIdThatV1Has>),
$b = ( SELECT EXPAND(out('E1').out('E2').out('E3')) FROM V1 WHERE id = <someIdThatV1Has>),
$c = unionAll( $a, $b )
您可以在下面查看文档link
http://orientdb.com/docs/2.1/SQL.html#select-from-multiple-targets
假设我有 4 个顶点 类:V1、V2、V3、V4 还有 3 边 类: E1,E2,E3
然后它们的实例(可能)像这样连接:
V1 --E1--> V2
V2 --E2--> V3
V2 --E3--> V4
V3 --E3--> V4
所以,从图形上看是这样的:
V1---E1---V2
| \
E2 E3
| \
V3---E3---V4
按照上面显示的方向。
我现在对从 V1 到 V4 显示的确切边缘上的路径感兴趣(它们之间可能还有我们不知道的其他边缘,所以只有已经提到的边缘类型是可以的。)
检查是否存在从V1到V4的路径之一(如果路径存在则返回V4):
SELECT EXPAND(out('E1').out('E3')) FROM V1 WHERE id = <someIdThatV1Has>
检查其他路径是否存在(如果路径存在则返回V4):
SELECT EXPAND(out('E1').out('E2').out('E3')) FROM V1 WHERE id = <someIdThatV1Has>
我唯一感兴趣的是知道这两条路径中的一条是否存在。我想用一个查询来做到这一点。
问题
如何将这两个查询合并为一个查询以查明这两个路径之一是否存在?
(如果可能的话,将非常感谢关于如何在 OrientDB 中合并不同遍历查询的一般性答案以及明确的答案。)
谢谢!
试试 unionAll
select expand($c)
let $a = ( SELECT EXPAND(out('E1').out('E3')) FROM V1 WHERE id = <someIdThatV1Has>),
$b = ( SELECT EXPAND(out('E1').out('E2').out('E3')) FROM V1 WHERE id = <someIdThatV1Has>),
$c = unionAll( $a, $b )
您可以在下面查看文档link http://orientdb.com/docs/2.1/SQL.html#select-from-multiple-targets