Emits a join as the engine needs it (emitJoinRelation), then a select that gives the columns their order and drops the temporary ones.

The join must be valid for its input schemas.