Prueba con esto
Código SQL
[-]SELECT maestro.dni, maestro.nombre, maestro.ape1, maestro.ape2
FROM maestro INNER JOIN detalle ON maestro.dni = detalle.dni
WHERE detalle.curso in ('francés','inglés','árabe')
GROUP BY maestro.dni, maestro.nombre, maestro.ape1, maestro.ape2
ORDER BY maestro.dni
HAVING count(maestro.dni)>2;
Lógicamente, con AND no se encuentran resultados ya que ningun curso tiene los tres valores a la vez.
Cuentanos cómo te ha ido.
Saludos