That's expected. If you inner join on something that is optional/left-joined, then the inner join will filter rows, that's how it works. If you want to retain the rows, the second join should be a left join as well.