Código sql:
Ver originalSELECT DISTINCT
M.nombres,
HI.horaingreso,
HI.horasalida
FROM master M
INNER JOIN horaingreso HI ON M.id=HI.docenteid
INNER JOIN horasalida HS ON HS.docenteid=HS.docenteid;
El error es que hasta el momento en que ponías
master.id=horasalida.docenteid , aún no se había leído la tabla horasalida, sino que correspondía poner horaingreso.
En cuanto a la duplicación de datos, hay tres posibilidades: Lo más probable es que haya en realidad más de un horario de entrada y salida asignado a la misma persona. Otra posibilidad es que se esté produciendo un error de interpretación por parte de MySQL porque le has puesto el mismo nombre a la tabla que a un campo de la tabla... lo que suele dar resultados erráticos. La otra posibilidad es que haya inconsistencias de información por repetición de entradas no detectadas.