Hi,
The reason the additional join is needed is because the id column was created with a different set of column in the zpix table versus in the target table. The id column in desi_dr1.zpix was made from targetid, survey, program whereas the id column in desi_dr1.target was made from targetid, survey, tileid.