Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 将具有不同列的两个查询结果合并为一个_Neo4j_Combinations_Union - Fatal编程技术网

Neo4j 将具有不同列的两个查询结果合并为一个

Neo4j 将具有不同列的两个查询结果合并为一个,neo4j,combinations,union,Neo4j,Combinations,Union,我正在尝试联合/组合2个具有不同关系类型的查询结果,这些关系类型应该在以后保持分离(子查询r2、r3不相同的列名)。我想得到一个c,p,r2,r3的输出图 我尝试了以下密码查询: MATCH (p:Sample)-[r3:`Age`]->(c:Sample) WHERE r3.age >= 50 RETURN p, r3, c UNION MATCH (p:Sample)-[r1:`Age`]->(c:Sample) MATCH (p:Sample)-[r2:`Size`]

我正在尝试联合/组合2个具有不同关系类型的查询结果,这些关系类型应该在以后保持分离(子查询r2、r3不相同的列名)。我想得到一个c,p,r2,r3的输出图

我尝试了以下密码查询:

MATCH (p:Sample)-[r3:`Age`]->(c:Sample)
WHERE
r3.age >= 50
RETURN p, r3, c 
UNION 
MATCH (p:Sample)-[r1:`Age`]->(c:Sample)
MATCH (p:Sample)-[r2:`Size`]->(c:Sample)
WHERE
(r2.size <= 50 and r1.age >= 20)
return p, r2, c
结果应如下表所示:

    p |   r2  | r3   | c 
  ------------------------
   p1 |       | sth  | c1
   p1 |  sth  |      | c1 
   ...|  ...  |  ... | ...

我想我解决了。诀窍是创建空列以对齐列名,以便UNION可以工作: 将:NULL作为r2NULL作为r3添加到特定的return.s中

MATCH (p:Sample)-[r3:`Age`]->(c:Sample)
WHERE
r3.age >= 50
RETURN p, NULL as r2,  r3, c

UNION 

MATCH (p:Sample)-[r1:`Age`]->(c:Sample)
MATCH (p:Sample)-[r2:`Size`]->(c:Sample)
WHERE
(r2.size <= 50 and r1.age >= 20)
return p, r2, NULL as r3, c
MATCH(p:Sample)-[r3:`Age`]->(c:Sample)
哪里
r3.年龄>=50
返回p,NULL为r2、r3、c
联合
匹配(p:样本)-[r1:`Age`]->(c:样本)
匹配(p:样本)-[r2:`Size`]->(c:样本)
哪里
(r2.1尺寸=20)
返回p,r2,NULL作为r3,c

那么,您的问题是哪一个?
MATCH (p:Sample)-[r3:`Age`]->(c:Sample)
WHERE
r3.age >= 50
RETURN p, NULL as r2,  r3, c

UNION 

MATCH (p:Sample)-[r1:`Age`]->(c:Sample)
MATCH (p:Sample)-[r2:`Size`]->(c:Sample)
WHERE
(r2.size <= 50 and r1.age >= 20)
return p, r2, NULL as r3, c