2016-09-02 12 views
0

私はファミリーツリーのグラフを持っています。私が興味を持っている人がいくつかあり、彼らの直属の家族が誰であるかを見ています。私は興味の人の兄弟を返します。素敵なクエリがあります:私はまた、関心の人の子を返すことができNeo4jの2つの異なるサイファークエリの結果を組み合わせる

MATCH (p:Person)-[]-(parent:Person)-[]->(parents_kids:Person) 
WHERE p.`person_of_interest` = 'y' 
RETURN p, parent, parents_kids 
; 

を:

MATCH (p:Person)-[]->(children:Person) 
WHERE p.`person_of_interest` = 'y' 
RETURN p, children 
; 

は、これらのクエリは、個別に正常に動作しますが、どのように結果をまとめて返しますか?

問題は、興味のある人がデータベースに子供を持っていないことがあるということです。一方、関心のある人はデータベースに親を持たないこともあります。だから私は両方の場合に一致する1つのクエリを書くことはできません。これが不明である場合は、私はもちろん、これを変更することができ

| person_of_interest | silblings | children | 
|--------------------|-----------|----------| 
|     |   |   | 
|     |   |   | 

私は単純なテーブルを取得したいよ...私はNULL値が適切な場合に存在し、このような何かを考えています最小の再現可能な例を用いて質問する。ありがとう!

+0

私はpと親の最初の試合で、関係の方向が親から子に向かっていると仮定しようと思いますか?無関係の関係では、pの親と子の両方に親をマッチさせます(またはPersonからの他の関係に) – InverseFalcon

+0

また、出力のために、親を収集する列と子を収集する別の列が必要ですか?または、親と子の両方が含まれている単一の列が必要な場合(存在する場合)は?または、他の何か?希望のクエリ出力を提供すれば、より有用なソリューションを提供するのに役立ちます。 – InverseFalcon

+0

#1はい私は方向をより明確にするためにそこにその矢印を置くことができました。私の場合はグラフがどのように設定されているかによって何も変わることはありませんが、観察に感謝します。 –

答えて

2

このクエリでは、parents,siblings、およびchildrenという興味のあるPersonコレクションと、おそらく空のコレクションが返されます。

​​

クエリはHAS_CHILD関係タイプは、親から子への関係を示すために使用されていることを前提としています。

興味のある人の発見をスピードアップするには、にindexまたはunique constraintを作成する必要があります。

+0

あなたの最後の編集は本当にそれがすべて一緒に来るようにしました。出力は、キー、ペアのリストになりました。これは素晴らしいです。私は今から多くの私の仕事の基盤としてこれを使用します。どうもありがとうございます!! –

関連する問題