Si no vas a aumentar nunca el numero de idiomas por usuario puedes hacerlo con la primera pero como te aparezca un usuario que quiere 4 o quieras que tu empresa crezca y dejar libre el numero de idiomas vas a tener problemas...
(en si es un error de diseño)
Tanto en el primer caso como en el segundo te faltaria una tabla:
TablaIdiomas
idIdioma
nombreidioma
y en las tablas usuario, ensena i aprende guardas el id del idioma no el nombre, esto reducirá mucho el espacio en disco y elimina la posibilidad de escribir el nombre de un idioma de distintas formas "Español" "Castellano"....
la consulta que pides no se me ocurre como hacerla sin subconsultas....
Código:
Select tabla_usuarios.nombre,
tabla_aprende.idioma_aprende
from tabla_usuarios inner join tabla_aprende
on tabla_usuarios.ID_usuario= tabla_aprende.ID_usuario
where tabla_usuarios.ID_usuario
in (Select tabla_usuarios.ID_usuario
from tabla_usuarios inner join tabla_aprende
on tabla_usuarios.ID_usuario= tabla_aprende.ID_usuario
where idioma_aprende="Español");
Quim