The  WHERE gets tied to the OPTIONAL MATCH.
If you want the WHERE to apply to the whole thing you need to end the 
OPTIONAL with a WITH. 
Something like:


MATCH 
    (n1:Label1)
WHERE 
    (n1.propertyA = {param1})
OPTIONAL MATCH 
    (n1)<-[r:rel1]-(n2:Label2)
WITH n1, r, n2
WHERE
    (r IS NULL OR n2.propertyB = {param2})
RETURN
    n1;

On Monday, February 1, 2016 at 5:27:10 PM UTC-6, matias...@brinqa.com wrote:
>
> One more thing to add is that what I was doing for previous versions of 
> Neo4j and it was working (but it's not allowed anymore) is the following:
>
> START
>    n1=({node})
> MATCH
>    n1<-[r?:rel1]-n2
> WHERE 
>    n1.propertyA = {param1} AND (r is null OR n2.propertyB! = {param2})
> RETURN 
>   n1;
>
> Thanks,
> Matias.
>
> On Monday, February 1, 2016 at 8:10:29 PM UTC-3, matias...@brinqa.com wrote:
>
> Hi all,
>>
>> I'm having a hard time building a query with optional relationship using 
>> Neo4j 2.3.2.
>>
>> My query is something like this:
>>
>> MATCH 
>>     (n1:Label1)
>> WHERE 
>>     (n1.propertyA = {param1})
>> OPTIONAL MATCH 
>>     (n1)<-[r:rel1]-(n2:Label2)
>> WHERE
>>     (NOT (n1)<-[r:rel1]-(n2) OR n2.propertyB = {param2})
>> RETURN 
>>
>     n1;
>>
>> My intention is to return all n1 objets that don't have a relationship to 
>> n2 or if they have a relationship check for propertyB and filter by that. 
>> What I'm getting is all the n1 even when rel1 exists and propertyB != 
>> {param2}
>>
>> Anyone sees what's the issue in this query? I can't see it...
>>
>> Thanks,
>> Matias.
>>  
>>
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to neo4j+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to