That's kind of crazy, how can something so simple be so complicated?

something like this:

select * from a full outer join b on a.id = b.id

turns into a wall of seemingly impenetrable logic.

Would the zip extension method work for this?