Как объединить несколько выражений WITH и MATCH в Cypher Neo4j - PullRequest
2 голосов
/ 14 июня 2019

Я работаю над вопросом, состоящим из двух разных частей, связанных друг с другом. Я хочу объединить их обоих.

1: Первая часть

MATCH (r:Route)-[source_Airport_ID]->(a:Airport)
with count(r.SourceAirportID) as cnt, a.AirportID as          
NumberofAirports_Having_source_flightGreater300
where cnt>300
Return Count(NumberofAirports_Having_source_flightGreater300) 

2: вторая часть

MATCH (r:Route)-[destination_Airport_ID]->(a:Airport) 
with count(r.SourceAirportID) as cnt, a.AirportID as  
NmberofAirports_Having_destination_flightGreater300
where cnt>300
Return Count(NumberofAirports_Having_destination_flightGreater300)

3: Часть комбайна

MATCH (r:Route)-[source_Airport_ID]->(a:Airport) 
with count(r.SourceAirportID) as cnt, a.AirportID as   
NumberofAirports_Having_source_flightGreater300
where cnt>300

MATCH (r:Route)-[destination_Airport_ID]->(a:Airport) 
with count(r.SourceAirportID) as cnt, a.AirportID as     
NumberofAirports_Having_destination_flightGreater300,      
NumberofAirports_Having_source_flightGreater300
where cnt>300

Return      
Count(NumberofAirports_Having_source_flightGreater300),
Count(NumberofAirports_Having_destination_flightGreater300)

1: Первый дает счет 104

2: второй запрос также дает 104

3: Но когда я объединяю их обоих, ответ равен 10816. Как объединить оба, и ответ все еще остается 104 для обоих?

1 Ответ

1 голос
/ 14 июня 2019

Это должно работать:

MATCH (r:Route)-[source_Airport_ID]->(a:Airport)
with count(r.SourceAirportID) as cnt, a.AirportID as          
NumberofAirports_Having_source_flightGreater300
where cnt>300
WITH COUNT(NumberofAirports_Having_source_flightGreater300) AS cnt1

MATCH (r:Route)-[destination_Airport_ID]->(a:Airport) 
WITH cnt1, count(r.SourceAirportID) as cnt, a.AirportID as  
NmberofAirports_Having_destination_flightGreater300
where cnt>300
Return cnt1, Count(NumberofAirports_Having_destination_flightGreater300) AS cnt2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...