我正试图理解Cypher中以下查询的输出。
start n=node:node_auto_index(name="root_node")
match n-[:SC]->c, b<-[:CB]-c-[:CB]->b1
where (b.days_in_number - b1.days_in_number <= 7) AND (b.days_in_number > b1.days_in_number)
and c.name = "C16659"
with distinct n,c, b, b1
match n-[:SC]->c-[:CB]->b-[:CT]->i1, n-[:SC]->c-[:CB]->b1-[:CT]->i2
with b.name as bname,b1.name as b1name,i1.name as i1name,i2.name as i2name
return bname,b1name,i1name,i2name
order by bname,b1name,i1name,i2name;
返回3680行
start n=node:node_auto_index(name="root_node")
match n-[:SC]->c, b<-[:CB]-c-[:CB]->b1
where (b.days_in_number - b1.days_in_number <= 7) AND (b.days_in_number > b1.days_in_number)
and c.name = "C16659"
with distinct n,c, b, b1
match b-[:CT]->i1, b1-[:CT]->i2
with b.name as bname,b1.name as b1name,i1.name as i1name,i2.name as i2name
return bname,b1name,i1name,i2name
order by bname,b1name,i1name,i2name;
返回184行
查询1似乎是在做笛卡儿,但我不明白为什么?有人能解释一下吗?
c-:CB->b为1:n关系。
更新:
当我运行以下查询时,我得到了正确的184结果:
start n=node:node_auto_index(name="root_node")
match n-[:SC]->c, b<-[:CB]-c-[:CB]->b1
where (b.days_in_number - b1.days_in_number <= 7) AND (b.days_in_number > b1.days_in_number)
and c.name = "C16659"
with distinct n,c, b, b1
match c-[:CB]->b-[:CT]->i1, c-[:CB]->b1-[:CT]->i2
with n.name as nname,c.name as cname, b.name as bname,b1.name as b1name,i1.name as i1name,i2.name as i2name
return nname,cname,bname,b1name,i1name,i2name
order by nname,cname,bname,b1name,i1name,i2name;
这意味着把n放回去会导致笛卡尔。
n-:SC->c为1:1关系。为什么会发生这种情况?
发布于 2013-04-09 06:50:29
你证明了n和c之间的关系实际上是唯一的吗?梅比看看这些路会有帮助的。试一试
match p1=n-[:SC]->c-[:CB]->b-[:CT]->i1, p2=n-[:SC]->c-[:CB]->b1-[:CT]->i2
return p1,p2
看看不同的结果有什么不同。
https://stackoverflow.com/questions/15880710
复制相似问题