Ваш первый запрос не работает, потому что "story0_" неизвестно в предложении "on"
from fantasy.story story0_, fantasy.plotline plotline1_ inner join fantasy.character character2_ on story0_.CharacterID=character2_.CharacterID
Когда вы пишете «из A, B, внутреннее соединение C», SQL (версия 5.0 и выше) рассматривает только внутреннее соединение между B и C, а затем разрешает только «on» между этими двумя таблицами.
2 решения должны работать:
from ( fantasy.story story0_, fantasy.plotline plotline1_ ) inner join fantasy.character character2_ on story0_.CharacterID=character2_.CharacterID
from fantasy.plotline plotline1_, fantasy.story story0_ inner join fantasy.character character2_ on story0_.CharacterID=character2_.CharacterID
Более подробная информация доступна по адресу: https://bugs.mysql.com/bug.php?id=13551
Я думаю, что решение, которое вы нашли, работает, потому что CharacterID также является полем plotline1_
В настоящее время я сталкиваюсь с этой проблемой в Hibernate, и даже если я выяснил, почему в операторе SQL возникло исключение (и как его исправить), я не знаю, как настроить Hibernate, чтобы он генерировал один из тезисов 2 решения.
Если кто-нибудь знает, как это сделать с помощью Hibernate, спасибо за помощь!