Это выполнимый сценарий. Вы можете присоединиться к таблице дважды в запросе, обычно присваивая ей другой псевдоним, чтобы все было просто.
Например:
SELECT s.name AS "student name", c1.className AS "student class", c2.className as "class list"
FROM s
JOIN many_to_many mtm ON s.id_student = mtm.id_student
JOIN c c1 ON s.id_class = c1.id_class
JOIN c c2 ON mtm.id_class = c2.id_class
Это даст вам список имен всех учеников и «жестко закодированных» классов со всеми их классами из таблицы many_to_many.
Тем не менее, эта схема не имеет логического смысла. Из того, что я могу собрать, вы хотите, чтобы ученики могли иметь несколько классов, поэтому таблица many_to_many должна быть там, где вы хотите найти классы, связанные со студентом. Если записи id_class, используемые в таблице s, отличаются от записей в many_to_many (например, если s.id_class ссылается, скажем, на назначения классов в классе, которые появляются только в этой таблице, тогда как many_to_many.id_class ссылается на классы для кредита и исключает классы для классов), вместо этого вам лучше разбить c на две таблицы.
Если это не так, мне трудно понять, почему вы хотите, чтобы один класс был подключен к таблице s.
РЕДАКТИРОВАТЬ: Только что увидел ваш комментарий, что это была выдуманная схема, чтобы привести пример. В других случаях это может быть разумным способом сделать что-то. Например, если вы хотите отслеживать местоположения компании, у вас может быть таблица Company, таблица Locations и таблица стран. Таблица «Компания» может иметь ссылку «1-много» на «Страны», где вы будете отслеживать страну, в которой расположена штаб-квартира компании, но ссылку «многие ко многим» через «Места», где вы будете отслеживать каждое место, где у компании есть магазин.
Если вы можете дать реальную информацию о том, что на самом деле представляет схема для вашего клиента, нам было бы легче выяснить, логично ли это в этом случае.