It’s because of your WHERE
clause.
Whenever you specify a value from the right side of a left join in a WHERE
clause (which is NOT NULL
), you necessarily eliminate all of the NULL
values and it essentially becomes an INNER JOIN
.
If you write, AND (c.foobar="somethingelse" OR c.foobar IS NULL)
that will solve the problem.
You can also move the c.foobar
portion into your join predicate, and that too will solve the issue.