2013-07-08 36 views
0

鑑於這種圖表:的Cypher查詢返回什麼,但數據是有

http://console.neo4j.org/r/g3j3xo

我試圖返回誰同schoolTypeClass內影響的哲學家所有的哲學家。首先,我將顯示正常工作的查詢。問題查詢位於帖子的底部。

這是上述鏈接中默認的查詢。我打算證明數據在那裏。也就是說,亞里士多德和柏拉圖都分享了SchoolTypeClass'運動'

MATCH p1:Philosopher-[:MEMBER_OF]->s1:School-[:TYPE_OF]->st1:SchoolType-[:SUBCLASS_OF]->stc1:SchoolTypeClass 
    WHERE stc1.name = 'movement' 
    RETURN p1.name as p1Name, s1.name as s1Name, st1.name as st1Name, stc1.name as stc1Name 

這是一個可以正常工作的查詢。這與查詢不起作用非常相似。它顯示了哲學家誰影響在同一schoolType而不是schoolTypeClassic哲學家

MATCH st2:SchoolType<-[:TYPE_OF]-s2:School<-[:MEMBER_OF]-p2:Philosopher<-[:INFLUENCES]-p1:Philosopher-[:MEMBER_OF]->s1:School-[:TYPE_OF]->st1:SchoolType 
    WHERE st2 = st1 
    RETURN p1.name as p1Name, s1.name as s1Name, st1.name as st1Name, p2.name as p2Name, s2.name as s2Name, st2.name as st2Name 

問題查詢返回什麼都沒有。如何讓哲學家在同一個schoolTypeClass中影響哲學家?

MATCH stc2:SchoolTypeClass<-[:SUBCLASS_OF]-st2:SchoolType<-[:TYPE_OF]-s2:School<-[:MEMBER_OF]-p2:Philosopher<-[:INFLUENCES]-p1:Philosopher-[:MEMBER_OF]->s1:School-[:TYPE_OF]->st1:SchoolType-[:SUBCLASS_OF]->stc1:SchoolTypeClass 
    WHERE stc1 = stc2 
    RETURN p1.name as p1Name, s1.name as s1Name, st1.name as st1Name, stc1.name as stc1Name, p2.name as p2Name, s2.name as s2Name, st2.name as st2Name, stc2.name as stc2Name 

回答

0

在同一個MATCH(stc1/2)中,不能有兩次使用不同名稱的同一個節點。

MATCH p=s2:School<-[:MEMBER_OF]-p2:Philosopher 
     <-[:INFLUENCES]-p1:Philosopher-[:MEMBER_OF]->s1:School 
     -[:TYPE_OF]->st1:SchoolType-[:SUBCLASS_OF]->stc:SchoolTypeClass 
WHERE (stc)<-[:SUBCLASS_OF]-(:SchoolType)<-[:TYPE_OF]-s2 
RETURN p1.name AS p1Name, s1.name AS s1Name, st1.name AS st1Name, 
     stc.name AS stcName, p2.name AS p2Name, s2.name AS s2Name, p 

因此,你寧願檢查比賽。

http://console.neo4j.org/r/t6lj05

+0

我將此標記爲答案,因爲它返回正確的結果。但是,您不能在相同的MATCH中使用不同名稱兩次具有相同的節點。「我在我的帖子的第二個查詢中做了這個,在那裏我測試了與WHERE st2 = st1的節點相等。 –

相關問題