2013-08-31 4 views
0

나는 사이퍼 쿼리가 초보자입니다.Cypher의 neo4j 하위 쿼리

START s=node(1) match s-[r]->f return f; 

결과 :

+----------------------------------+ 
| f        | 
+----------------------------------+ 
| Node[2]{talk_id:2,phone_num:"2"} | 
| Node[3]{talk_id:3,phone_num:"3"} | 
| Node[4]{talk_id:4,phone_num:"4"} | 
+----------------------------------+ 

한때

데이터가

CREATE (USER{ talk_id : 1 , phone_num : "1" }); //[1] 
CREATE (USER{ talk_id : 2 , phone_num : "2" }); //[2] 
CREATE (USER{ talk_id : 3 , phone_num : "3" }); //[3] 
CREATE (USER{ talk_id : 4 , phone_num : "4" }); //[4] 


CREATE (USER{ talk_id : 5 , phone_num : "5" }); //[5] 
CREATE (USER{ talk_id : 6 , phone_num : "6" }); //[6] 
CREATE (USER{ talk_id : 7 , phone_num : "7" }); //[7] 

START s=node(1) , d=node(2) CREATE s-[r:FRIEND]->d RETURN r; 
START s=node(1) , d=node(3) CREATE s-[r:FRIEND]->d RETURN r; 
START s=node(1) , d=node(4) CREATE s-[r:FRIEND]->d RETURN r; 

START s=node(2) , d=node(7) CREATE s-[r:FRIEND]->d RETURN r; 

쿼리 1 quering 삽입 다음과 같이 I 조회 할 입니다 ERY 2

start s = node(2, 3 , 4) , s1 = node(2 , 3 , 4) match p=s-[r]->s1 return s1; 

제가 S와 교차 S1의 관계를 원하는 노드;

결과 :

+----------------------------------+ 
| s        | 
+----------------------------------+ 
| Node[3]{talk_id:3,phone_num:"3"} | 
+----------------------------------+ 
1 row 

내가 무엇을해야

+----------------------------------+ 
| f        | 
+----------------------------------+ 
| Node[2]{talk_id:2,phone_num:"2"} | 
| Node[3]{talk_id:3,phone_num:"3"} | 
| Node[4]{talk_id:4,phone_num:"4"} | 
| Node[3]{talk_id:3,phone_num:"3"} | 
+----------------------------------+ 

) 하나 개의 쿼리에 두 가지를 결합

예를 야기하고 싶지만? RDBMS는 서브 쿼리와 같습니다.

TANK YOU ^^;

+0

질문을 이해할 수 없습니다. 수정하십시오. –

+0

죄송합니다. 영어에 가난하다. 내 질문을 편집하십시오. 제발 대답 – ThreadBuilder

답변

1

질문을 올바르게 이해했는지 확실하지 않습니다.

start s=node(1) 
match s-[r1]->()-[r2]->f 
return f 
: 나는 당신이 두 번째 쿼리에 대한 시작점으로 첫 번째 쿼리의 결과를 사용하여 단일 쿼리로 그를 결합하려는)

1을 요구하고 이가지 경우를 추측 할 수있는 기반으로

NB path이면 match 뒤에 오는 표현식은 임의의 길이를 가질 수 있습니다.

당신은 또한 분할하고 하나의 결과 집합에 두 개의 서로 다른 쿼리의 결과를 결합하려는) with

start s=node(1) 
match s-[r1]->t 
with t 
match t-[r2]->f 
return f 

2 사용하여 하위 쿼리를 체인 수 있습니다. 이 경우 Neo4j 2.0에 도입 된 UNION 키워드를 사용하거나 클라이언트 측에서이 작업을 수행해야합니다.

+0

답변 감사합니다. 그러나 이것은 내가 요구 한 것이 아닙니다. 내 질문을 다시 편집 – ThreadBuilder

+0

굵은 글씨로 업데이트 – ThreadBuilder