У нас есть список книг на странице, когда вы нажимаете на книгу, мы хотим, чтобы вы были перенаправлены на последнюю версию
- Книги не содержат ссылкик версии (а также не может иметь версию, еще не полученную)
- Каждая версия содержит ссылку на книгу
Я пытаюсь преобразовать запрос SQL в SQLAlchemy:
SELECT book.id, book.name, version.id, version.preview_url
FROM books as book
LEFT OUTER JOIN versions as version
ON version.id = (
SELECT TOP 1 id
FROM versions
WHERE book_id = book.id
ORDER BY versions.id DESC
)
Я печатаю список книг, когда вы нажимаете на книгу, я хочу, чтобы вы были перенаправлены на последнюю версию, поэтому мне нужен последний идентификатор версии для каждой книги.Запрос SQL работает, но после нескольких попыток не удается выполнить его в SQLAlchemy.
subquery = session.query(Version)\
.filter(Book.id == Version.book_id)\
.order_by(Version.id.desc())\
.limit(1)\
.subquery()
query = session.query(Book)\
.join(Version, Version.id == subquery)\
.order_by(Book.id.desc())
SQLAlchemy вставляет предложение FROM в подзапрос: FROM Book, Version
также вводит предложение FROMиз основного запроса, поэтому Book
будет загружен два раза и получит ошибку ...