Hi,

this is normal sql behavior
if you do not need to implicit INNER JOIN condition then move filter to left 
join itself
in your situation:
instead “where mytable.id is not null” write “ AND mytable.id is not null”

...
select aux.n, mytable.id
from aux
   LEFT JOIN mytable on aux.n between mytable.id and mytable.id +1 and 
mytable.id is not null
...

regards,
Karol Bieniaszewski

From: Germán Balbi bal...@yahoo.com [firebird-support] 
Sent: Monday, October 2, 2017 7:37 PM
To: Firebird-support 
Subject: [firebird-support] CTE Recursive left join problem

  

Hello everyone
I'm having a problem, and I do not understand why.
I have a structure similar to:with recursive aux as (  select 0 as n    from 
rdb$database  union all  select aux.n + 1    from aux    where aux.n <= 20 )  
select aux.n, mytable.id from aux   LEFT JOIN mytable on aux.n between 
mytable.id and mytable.id +1  where mytable.id is not null Where the left join 
behaves as join. Any condition that I put in the clause WHERE referred to 
mytable, converts the LEFT JOIN into JOIN
  • [firebird-support]... Germán Balbi bal...@yahoo.com [firebird-support]
    • Re: [firebird... 'livius' liviusliv...@poczta.onet.pl [firebird-support]

Reply via email to