CREATE VIEW historyView AS SELECT history.history_id AS id, mangas._id AS mangaId, chapters._id AS chapterId, mangas.title, mangas.thumbnail_url AS thumnailUrl, chapters.chapter_number AS chapterNumber, history.history_last_read AS readAt, max_last_read.history_last_read AS maxReadAt, max_last_read.history_chapter_id AS maxReadAtChapterId FROM mangas JOIN chapters ON mangas._id = chapters.manga_id JOIN history ON chapters._id = history.history_chapter_id JOIN ( SELECT chapters.manga_id,chapters._id AS history_chapter_id, MAX(history.history_last_read) AS history_last_read FROM chapters JOIN history ON chapters._id = history.history_chapter_id GROUP BY chapters.manga_id ) AS max_last_read ON chapters.manga_id = max_last_read.manga_id; countHistory: SELECT count(*) FROM historyView WHERE historyView.readAt > 0 AND maxReadAtChapterId = historyView.chapterId AND lower(historyView.title) LIKE ('%' || :query || '%'); history: SELECT id, mangaId, chapterId, title, thumnailUrl, chapterNumber, readAt FROM historyView WHERE historyView.readAt > 0 AND maxReadAtChapterId = historyView.chapterId AND lower(historyView.title) LIKE ('%' || :query || '%') ORDER BY readAt DESC LIMIT :limit OFFSET :offset;