[Neo4j] Re: Unexpected result using queries with optional relationships

2016-02-02 Thread Max De Marzi Jr.
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.


[Neo4j] Re: Unexpected result using queries with optional relationships

2016-02-01 Thread matias . burak
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.