我有这个相当复杂的查询
SELECT FROM (
SELECT EXPAND(INV()) FROM (
SELECT FROM (
SELECT EXPAND(OUTE('Streamed')) FROM (
SELECT EXPAND(OUT('Follows')) FROM #12:3923
)
)
)
)
可以描述为:
从@rid#12:3923这是一个User类,找到他关注的用户,看看他们有哪些Post(顶点)流(边缘)。
现在有了这个,如果可能的话,我还想拥有同一行中流式传输每个帖子的人的用户名(User.username)。
答案 0 :(得分:6)
在参考这个小例子时,你的目标将从顶点' Alessandro'开始。跟随他的人[Luigi,Gabriele]已经流了下来 一些帖子[在这种情况下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)
命令'放松'用于分离各个帖子的每一行,以便获得与表格最相似的视图。 (根据您的需要调整)。
答案 1 :(得分:0)
数据集是您需要合并的数据集。在您的情况下,首先是User.username,第二个是Post。
select expand($all) let
$a = (//your query for fetching User.username),
$b = (//your query for fetching Post),
$all = unionall($a, $b)
EDIT ::
嗯,作为替代方案,你可以尝试这样的事情:
select username, postName from (TRAVERSE out() from #12:3923 WHILE $depth <= 2)
然而,这并不能完全满足您的期望。结果将是两列,即用户名(来自您的用户顶点)和postName(来自您的Post顶点)。
使用username
(s)为用户获得后跟给定的@rid,您将获得后续行中这些用户的所有相应Post顶点。相应的用户名列值将为空。
我认为Follows
边缘来自用户,而Streamed
边缘来自用户到帖子。