Limpiando basura tenemos:
Código SQL:
Ver originalSELECT E.nombreemp, E.dni, E.tel, P.nombre
FROM empleado E
INNER JOIN asignado A ON E.idempleado = A.idempleado
INNER JOIN puesto P ON P.idpuesto=A.idpuesto
Ese código no contiene errores.
Según eso, devolverá un registro de cada empleado por cada puesto que hayan tenido asignado, pero dado que no hay restricciones, si el mismo empelado tuvo más de un puesto a través del tiempo, puede haber mas de un registro por cada empelado.
Si quieres un único registro por empleado, debes poner restricciones en el WHERE que determinen cual de los puestos que tiene o ha tenido necesitas que devuelva.