It's the outer join that will return what you want. Outer joins return all of one side of the select and the matching part of the other...let's say you have a left outer join like this:
select * from tablea left outer join tableb on tablea.fieldx = tableb.fieldy
EVERYTHING in tablea is returned because it to the left of the join...only the rows that match (a traditional inner join) are displayed for tableb, the rest of the rows that don't match are returned as null.
HTH