gpt4 book ai didi

sql - 如何在 OrientDB 中合并两个查询的结果

转载 作者:行者123 更新时间:2023-12-04 20:56:52 25 4
gpt4 key购买 nike

假设我有 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 )

您可以在以下链接查看文档 http://orientdb.com/docs/2.1/SQL.html#select-from-multiple-targets

关于sql - 如何在 OrientDB 中合并两个查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33808984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com