Gracias por tu respuesta repara2, ya había intentado con LEFT JOIN, peor el resultado es el mimo, incluso ejecutando algo menos complicado a lo anterior
en este caso el resultado es el mismo:
2 y 3 ya están en la tabla 'horarios' es por eso que no se repite, como dije antes al hacer un GROUP BY o DISTINCT elimina los repetidos, pero queda la lista completa de id, y los 2 que deberían desaparecer se mantienen