Count two relationships in one MATCH separately

Hello!

I have a problem when using count for a match pattern with two relationships. For example:

MATCH (a)-[r1]->(b)-[r2]->(c)
WHERE a.name = c.name AND a.name <> b.name
RETURN DISTINCT a.name AS origin, b.name AS middle, c.name AS destination,
    count(r1) AS count1, count(r2) AS count2
ORDER BY count1, count2 DESC

or even when using two separate MATCH patterns:

MATCH (a)-[r1]->(b), (c)-[r2]->(d)
WHERE ...
RETURN DISTINCT a.name AS origin, b.name AS middle1, c.name AS middle2,
    d.name AS destination, count(r1) AS count1, count(r2) AS count2
ORDER BY count1, count2 DESC

On both cases, both count1 and count2 return the same result, which is the combination of all possible relationships between the nodes (in the first query, if there are 3 relationships between a and b and 10 relationships between c and d, both counts return 30).

I'm still at the beginning of my neo4j/cypher learning curve, so I really can't figure this one out...
I hope I have made myself clear. (=

You need to use DISTINCT in your COUNT.

....
RETURN DISTINCT a.name AS origin, b.name AS middle, c.name AS destination,
    count(distinct r1) AS count1, count(distinct r2) AS count2

@igorgoldstein94
I did not get your exact question however I have one question
In your first query path MATCH (a)-[r1]->(b)-[r2]->(c): flow is from a to b to c
In your second query path MATCH (a)-[r1]->(b), (c)-[r2]->(d). Cross join a to b and c to b.
Are you really feel they both are same?

That's exactly what I needed. Thanks!!! :star_struck:

I didn't mean to say these queries were the same, sorry if it looked like it.
I just wanted to use two different examples of MATCH patterns that gave me the same result in terms of aggregation by count.