1

次の Cypher クエリを実行しようとしています

START b=node:customer_idx(ID = 'ABCD')   
MATCH p = b-[r1:LIKES]->stuff, someone_else_too-[r2:LIKES]->stuff
with b,someone_else_too, count(*) as matchingstuffcount
where matchingstuffcount > 1
//with   b, someone_else_too, matchingstuffcount, CASE WHEN ...that has r1, r2... END as SortIndex
return someone_else_too, SortIndex
order by SortIndex

上記のクエリは正常に機能しますが、下の「with」のコメントを外すと、次のエラーが発生します

Unknown identifier `b`.
Unknown identifier `someone_else_too`.
Unknown identifier `matchingstuffcount`.
Unknown identifier `r1`.
Unknown identifier `r2`.

回避するために、r1 と r2 を先頭に -to を含め"with b,someone_else_too, count(*) as matchingstuffcount". ます。これにより、count(*) が適切に集計されないため"with b, r1, r2, someone_else_too, count(*) as matchingstuffcount".、条件が台無しになります。count(*) > 1

Case When も実行できることを確認しながら、count(*) > 1 を除外するための回避策/提案はありますか?

4

1 に答える 1

0

console.neo4j.org経由のneo4j 2.0では、次のクエリを機能させることができました。WITH私はあなたが持っていた構造、つまり// WHERE/シーケンスを模倣しようとしましたWITHRETURN(何か見逃していたら、教えてください!)

START n=node:node_auto_index(name='Neo') 
MATCH n-[r:KNOWS|LOVES*]->m 
WITH n,COUNT(r) AS cnt,m 
WHERE cnt >1 
WITH n, cnt, m,  CASE WHEN m.name?='Cypher'  THEN 1  ELSE 0 END AS isCypher 
RETURN n AS Neo, cnt, m, isCypher 
ORDER BY cnt

ここで更新または変更します

于 2013-08-19T15:13:48.493 に答える