Nit (sorry): Why an outer join?  I think an inner join is sufficient here.  (Inner joins are generally more efficient.)