2012-05-22 81 views
0

我有這樣的圖表: (2)< - [0:CHILD] - (1) - [1:CHILD] - >(3) 單詞:節點1,2和3(所有的名字);端部0和1瞭解密碼輸出

我寫了下面的CYPHER查詢:

START nodes = node(1,2,3), relationship = relationship(0,1) 
RETURN nodes, relationship 

,並得到結果:

==> +-----------------------------------------------+ 
==> | nodes       | relationship | 
==> +-----------------------------------------------+ 
==> | Node[1]{name->"Risikogruppe2"} | :CHILD[0] {} | 
==> | Node[1]{name->"Risikogruppe2"} | :CHILD[1] {} | 
==> | Node[2]{name->"Beruf 1"}  | :CHILD[0] {} | 
==> | Node[2]{name->"Beruf 1"}  | :CHILD[1] {} | 
==> | Node[3]{name->"Beruf 2"}  | :CHILD[0] {} | 
==> | Node[3]{name->"Beruf 2"}  | :CHILD[1] {} | 
==> +-----------------------------------------------+ 
==> 6 rows, 0 ms 

現在我的問題: 爲什麼我成了所有節點兩次和關係3時間?我只想把它全部拿出來。

感謝您的時間^^

+0

這兩個起始集形成查詢輸入值的交叉乘積。 –

回答

0

您應該只看到一次節點和關係,除非您進行一些匹配。

試圖重現您的問題,但我一直未能。

http://tinyurl.com/cobd8oq

是否有可能爲你創造你的問題的console.neo4j.org例子嗎?

感謝,

安德烈斯

+0

哦,我的錯,我給你錯誤的查詢。 http://tinyurl.com/bpunlnh顯示正確的查詢。但我的問題仍然存在。爲什麼在節點2和節點3中都存在這兩種關係,只是其中一種與此相關。好吧,我不匹配,但爲什麼表格顯示在正確的行不只是2個關係? – hilbert

+1

什麼是用例?看起來沒有匹配,你只是得到了一種節點和關係的交叉產物,沒有多大意義 – Luanne

+0

START節點=節點(1,2,3)匹配(節點) - [r:CHILD] - (x)返回節點,r會給你所有的節點和它們的關係 – Luanne

1

方式Cypher支架的工作原理是非常相似的SQL。當你在你的START子句中創建你的變量時,你在SQL(表)中做了一個from nodes, relationships。你得到的所有可能值的笛卡爾積兩個原因,是因爲你沒有做任何形式的matchwhere對其進行過濾,所以它基本上是這樣的:

select * 
from nodes, relationships 

你在哪裏忘記放置表格之間的外鍵關係。

在Cypher支架,您可以通過做一個匹配,通常這樣做:

start n=node(1,2,3), r=relationship(0,1) 
match n-[r]-m // find where the n nodes and the r relationships point (to m) 
return * 

不過既然你沒有比賽,你會得到一個笛卡兒積。