Я получаю странные результаты при работе с SQLite и JDBC (фактически через JOOQ, но эту проблему можно воспроизвести, выполнив строку запроса вручную через JDBC). Моя база данных состоит из трех таблиц, включая отношения «многие ко многим» и «один ко многим». Я пытаюсь выбрать все значения «основной» таблицы и объединить все необходимые значения из таблиц отношений:
SELECT location.name,
world.world,
player.player
FROM location
JOIN world
ON location."world-id" = world."world-id"
LEFT OUTER JOIN (location2player
JOIN player
ON location2player."player-id" = player."player-id")
ON location."location-id" = location2player."location-id"
В JDBC этот запрос не выполняется:
java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (no such column: player.player)
Когда я выполняю запрос во внешнем редакторе SQLite, таком как SQLite Manager для Firefox, он работает, как и ожидалось.
Я работаю с sqlite-jdbc-3.7.2
, который я не могу изменить. Для справки, запрос JOOQ:
create.select(LOCATION.NAME,WORLD.WORLD_,PLAYER.PLAYER_)
.from(LOCATION
.join(WORLD)
.on(LOCATION.WORLD_ID.eq(WORLD.WORLD_ID)
)
.leftOuterJoin(LOCATION2PLAYER
.join(PLAYER)
.onKey()
)
.on(LOCATION.LOCATION_ID.eq(LOCATION2PLAYER.LOCATION_ID)
)
.fetch()
Почему этот запрос не работает в JDBC и как я должен это исправить?