バックグラウンド:
次の図に示すように、グラフデータneo4jの暗号構文を使用して、関係をクエリします。
望ましい結果
name1 | name2 | name3 |
name4 | name5 | ヌル |
name6 | ヌル | ヌル |
分析:
このステートメントを使用すると、クエリ結果は次のようになります。
match (d:Category{level:1})-[:IS_PARENT_OF]->(dd:Category{level:2})-[:IS_PARENT_OF]->(ddd:Category{level:3})
return d.name,d.code,dd.name,dd.code,ddd.name,ddd.code
order by d.code,dd.code,dd.code
つまり、カテゴリ関係の第1、第2、第3レベルが存在する場合にのみ、通常のクエリを返すことができます。それらのいずれかが存在しない場合、関係は返されません。
name1 | name2 | name3 |
解決
次のステートメントを使用します
//方法一,使用这种办法
optional match (d:Category{level:1})
with d
optional match (d)-[:IS_PARENT_OF]->(dd:Category{level:2})
with d,dd
optional match (dd)-[:IS_PARENT_OF]->(ddd:Category{level:3})
return d.name,d.code,dd.name,dd.code,ddd.name,ddd.code
order by d.code,dd.code,dd.code
//方法二,这个办法没试,可能行,先列出来--后面试了再更新
optional match (d:Category{level:1})-[:IS_PARENT_OF]->(dd:Category{level:2})-[:IS_PARENT_OF]->(ddd:Category{level:3})
return d.name,d.code,dd.name,dd.code,ddd.name,ddd.code
order by d.code,dd.code,dd.code