如何在OrientDB的SQL Projection中将expand函数输出与其他属性结合起来?

如何在OrientDB的SQL Projection中将expand函数输出与其他属性结合起来?,orientdb,Orientdb,我有两个类:Identity和User,从User到Identity都有边。我需要构造一个SQL查询,该查询将从标识字段中获取用户RID以及一些属性。 例如,我的标识类具有emailAddress、firstName和lastName属性。我的用户可以有多个到身份记录的传出边缘。 但是,此语句没有按预期工作: 从接收电子邮件的标识中选择expandin、emailAddress、firstName和lastName=abcd@temp.com 以上结果就是expandin的输出 我是否被困在两个

我有两个类:Identity和User,从User到Identity都有边。我需要构造一个SQL查询,该查询将从标识字段中获取用户RID以及一些属性。 例如,我的标识类具有emailAddress、firstName和lastName属性。我的用户可以有多个到身份记录的传出边缘。 但是,此语句没有按预期工作: 从接收电子邮件的标识中选择expandin、emailAddress、firstName和lastName=abcd@temp.com 以上结果就是expandin的输出
我是否被困在两个单独的调用/查询中,一个是从Identity获取道具,另一个是使用expand函数?

你可以跳到边缘,然后通过Identity和User reference进行输入/输出,然后像这样进行投影

select  out.emailAddress, out.firstName, out.lastName from (SELECT expand(inE()) from Identity where email="abcd@temp.com")

作为替代方案,此select语句允许您从用户和标识中选择属性

FROM子句,指向位于用户和标识之间的边缘 选择outV'User'。属性,指向开始节点用户,转到边缘 选择inV'Identity'。属性,结束节点标识的点,从边缘输入 在SELECT子句中,您可以通过在任何属性前面加上outV'User'来获取该属性。属性和/或inV'Identity'。属性

SELECT 
outV('User').firstName as name,
inV('Identity').email as email, 
somePropertyFromEdgeName as prop
FROM EdgeName //name of the edge between User and Identity
WHERE outV('User').firstName = 'John'
or inV(Identity').email = '...' 
// etc....
ORDER BY email asc, prop desc
在WHERE子句中,您可以通过在任何属性前加上outV'User'来搜索该属性。属性和/或inV'Identity'。属性

SELECT 
outV('User').firstName as name,
inV('Identity').email as email, 
somePropertyFromEdgeName as prop
FROM EdgeName //name of the edge between User and Identity
WHERE outV('User').firstName = 'John'
or inV(Identity').email = '...' 
// etc....
ORDER BY email asc, prop desc

这不是我想做的。我想将标识字段与用户字段合并。注意,我要从中选择out.firstName、out.lastName、电子邮件、密码,从电子邮件所在的标识中选择expandinE=abcd@temp.comTo必须在select out.firstName、out.lastName、in.email中使用的引用标识,in.password from选择expandinE from Identity where email=abcd@temp.complease请考虑添加一个句子来解释代码片段为什么和如何对OP问题进行回答。