Вы можете сделать это, присоединившись к таблице lesson_contract
дважды, один раз для каждого кода урока:
SELECT s.id, s.name FROM students s
INNER JOIN lesson_contract l1
ON s.id = l1.student_id AND l1.lesson_code = 'L1'
INNER JOIN lesson_contract l2
ON s.id = l2.student_id AND l2.lesson_code = 'L2'
Внутренние объединения отфильтруют результаты, поэтому вы получите только те строки, в которых оба условия соединениябыли выполнены.