Having the following graphs:

* node g1 with child nodes (a, b)
* node g2 with child nodes (b, c)

using the query 

```
MATCH (n)-[]-(m) WHERE ID(m) = id RETURN n

```

being **id** the id of the node g1, I get a and b, and vice-versa when using the id of g2. What I would like to understand is how can I get the intersection of those two results, in this case having the **first return (a, b)** and the **second return (b, c)** getting as **final result (b)**.

I tried using the WITH cause but I wasn't able to achieve the desired result. Keep in mind that I'm new to Neo4j and only came here after a few failed attempts, research on Neo4j Documentation, general google search and 
Stackoverflow.

**Edit1** (one of my tries):

```
MATCH (n)-[]->(m) 
WHERE ID(m) = 750 
WITH n 
MATCH (o)-[]->(b) 
WHERE ID(b) = 684 and o = n 
RETURN o

```

**Edit2:**

The node (b), that I represented as being the same on both graphs are in fact two different nodes on the db, each one relating to a different graph (g1 and g2). Representatively they are the same as they have the exactly same info (labels and attributes), but on the database thy are not. I'm sorry since it was my fault for not being more explicit on this matter :(

**Edit3:** 

Why I don't using a single node (b) for both graphs

Using the graphs above as example, imagine that I have yet another layer so: on g1 the child node (b) as a child (e), while on g2 the child node (b) as a child (f). If I had (b) as a single node, when I create (e) and (f) I only could add it to (b) loosing the hierarchy, becoming impossible to distinguish which of them, (e) or (f), belonged to g1 ou g2.