で2つのサイファー文の出力を結合:次のように私は別CYPHERクエリを有する凝集
次のサンプルの結果を返すQ1: START m=node(30) MATCH (m)-[d:define]->(n) where d.start=4 RETURN n.name,COUNT(d) as count
Q2: START m=node(30) MATCH (m)-[d:define]->(n) where d.start=5 RETURN n.name,COUNT(d) as count
:Q1から
:Q2から
a | 2
b | 1
c | 4
d | 3
を:
a | 1
b | 1
c | 4
e | 2
私は結果をオフラインで処理し、結合カウントを生成できますが、上記の2つのサイファークエリを組み合わせて、d.start 4と5から次のマージカウントを得ることはできますか?
a | 2 | 1
b | 1 | 1
c | 4 | 4
d | 3 | 0
e | 0 | 2
私がこれまで持っていたこと:名前とカウント(d)を次の段階に進めるにはどうすればよいですか?
START m=node(30)
MATCH (m)-[d:define]->(n)
where d.start=4
WITH m, COLLECT (n.name, COUNT(d)) as from1
MATCH (m)-[d:define]->(n)
where d.start=5
WITH m, COLLECT (n.name, COUNT(d)) as from2
ユニオンは、私が結果を一緒に結合したくないので、私にとっては機能しません。私はd.start = 4と5からのカウントを分離する必要があります。その結果、交差点のようになります。
あなたの質問をいくつかのタイプミスがあるようです。例えば、Q1とQ2は 'A'を定義しますが、決して使用しません。最終的なクエリはどこにも定義されていない 'c'を数えます。これらの問題を少なくとも修正して、結果を示すサンプルデータを提供できますか? (また、最近のバージョンのCypherでは、あなたが使っている方法でもはや 'START'を使うことはできませんが、それは比較的簡単に修正できます)。 – cybersam
あなたは解決策がそれほど遠くないわけではありません。あなたはcollectを使う必要はありません。最初の 'WITH'節で' COUNT(d1)as from1'を使い、2回目の 'WITH'の代わりに' RETURN m、from1、... 'を使います。 –
@cybersamオススメして、ごめんなさい。私はCypherの古いバージョンを使用しています。 – kami