para eso usa group_concat(access SEPARATOR '|') con GROUP BY el iduser
echa un vistazo al manual. Yo uniría con INNER JOIN primero el iduser y el access, y luego haría a su alrededor los LEFT JOIN que necesitara. Polr cierto, no sé por qué usas LEFT JOIN en la consulta de accesos; creo que no es necesario. No he probado nada, pero esa es la idea.
Código MySQL:
Ver originalSELECT t1.accesos
, u.
`iduser`, u.
`fullname`, u.
`gender`, c.
`company`, u.
`email`, u.
`phone`, ut.
`usertype` INNER JOIN `usertypes` ut
ON ut.
`idusertype` = u.
`usertypeid` INNER JOIN `types_access` ta
ON ta.
`usertypeid` = ut.
`idusertype` WHERE u.
`iduser` = @id
) GROUP BY u.iduser
)t1
ON u.iduser
= us.iduser
LEFT JOIN `companies` c
ON c.
`idcompany` = u.
`companyid` LEFT JOIN `usertypes` ut
ON ut.
`idusertype` = u.
`usertypeid`