如何在 OrientDB SQL SELECT 语句中组合字段
How to combine fields in OrientDB SQL SELECT statement
我有这个相当复杂的查询
SELECT FROM (
SELECT EXPAND(INV()) FROM (
SELECT FROM (
SELECT EXPAND(OUTE('Streamed')) FROM (
SELECT EXPAND(OUT('Follows')) FROM #12:3923
)
)
)
)
可以描述为:
从@rid #12:3923 是一个用户 class,找到他关注的用户并查看他们对哪个 Post(顶点)进行了流式处理(边)。
现在有了这个,如果可能的话,我还想从流式传输每个 Post 的人那里获得用户名 (User.username)。
数据集是您需要合并的数据集。在您的情况下,第一个是 User.username,第二个是 Post。
select expand($all) let
$a = (//your query for fetching User.username),
$b = (//your query for fetching Post),
$all = unionall($a, $b)
编辑::
好吧,作为替代方案,您可以尝试这样的操作:
select username, postName from (TRAVERSE out() from #12:3923 WHILE $depth <= 2)
然而,这并不能完全满足您的期望。结果将是两列,即用户名(来自您的用户顶点)和 postName(来自您的 Post 顶点)。
使用为用户获取的 username
(s) 后跟给定的@rid,您将在后续行中获取这些用户的所有相应 Post 顶点。并且相应的用户名列值将为空。
我假设 Follows
边是从用户到用户,Streamed
边是从用户到 Post。
参考这个小例子,你的目标将从顶点开始导出 'Alessandro' 关注他的人 [Luigi, Gabriele] 已经流过
一些 post [在这种情况下 post1,post2]。正确吗?
编辑
试试这个查询(为了便于阅读,这里分几行显示):
select username, myPost.name as postBody, myPost.postdate as postDate
from (select username,out("Streamed") as myPost
from (select EXPAND(OUT('Follows'))
from #12:0)
unwind myPost)
命令 'unwind' 用于分隔各种 post 的每一行,以便获得与 table 最相似的视图。 (根据您的需要进行调整)。
查询结果为:
EDIT_2
使用 "mypost.*" 的查询结果
我有这个相当复杂的查询
SELECT FROM (
SELECT EXPAND(INV()) FROM (
SELECT FROM (
SELECT EXPAND(OUTE('Streamed')) FROM (
SELECT EXPAND(OUT('Follows')) FROM #12:3923
)
)
)
)
可以描述为:
从@rid #12:3923 是一个用户 class,找到他关注的用户并查看他们对哪个 Post(顶点)进行了流式处理(边)。
现在有了这个,如果可能的话,我还想从流式传输每个 Post 的人那里获得用户名 (User.username)。
数据集是您需要合并的数据集。在您的情况下,第一个是 User.username,第二个是 Post。
select expand($all) let
$a = (//your query for fetching User.username),
$b = (//your query for fetching Post),
$all = unionall($a, $b)
编辑::
好吧,作为替代方案,您可以尝试这样的操作:
select username, postName from (TRAVERSE out() from #12:3923 WHILE $depth <= 2)
然而,这并不能完全满足您的期望。结果将是两列,即用户名(来自您的用户顶点)和 postName(来自您的 Post 顶点)。
使用为用户获取的 username
(s) 后跟给定的@rid,您将在后续行中获取这些用户的所有相应 Post 顶点。并且相应的用户名列值将为空。
我假设 Follows
边是从用户到用户,Streamed
边是从用户到 Post。
参考这个小例子,你的目标将从顶点开始导出 'Alessandro' 关注他的人 [Luigi, Gabriele] 已经流过 一些 post [在这种情况下 post1,post2]。正确吗?
编辑 试试这个查询(为了便于阅读,这里分几行显示):
select username, myPost.name as postBody, myPost.postdate as postDate
from (select username,out("Streamed") as myPost
from (select EXPAND(OUT('Follows'))
from #12:0)
unwind myPost)
命令 'unwind' 用于分隔各种 post 的每一行,以便获得与 table 最相似的视图。 (根据您的需要进行调整)。
查询结果为:
EDIT_2
使用 "mypost.*" 的查询结果