From: APTX Date: Sun, 8 Jul 2012 18:03:47 +0000 (+0200) Subject: Use file_episode_rel to list files for which an episode is not the main episode X-Git-Url: https://gitweb.aptx.org/?a=commitdiff_plain;h=4fa04c2d076f68cc7fea78d4b950a1dcf095d340;p=localmylist.git Use file_episode_rel to list files for which an episode is not the main episode --- diff --git a/localmylist/mylistnode.cpp b/localmylist/mylistnode.cpp index 764c91e..1b36156 100644 --- a/localmylist/mylistnode.cpp +++ b/localmylist/mylistnode.cpp @@ -157,7 +157,11 @@ int MyListAnimeNode::fetchMore() qDebug() << "fetching some more for aid" << m_id; QSqlQuery q(LocalMyList::instance()->database()->connection()); - if (!q.exec("SELECT eid, title_english, epno, rating, my_vote, (SELECT MIN(my_watched) FROM file WHERE eid = episode.eid AND my_watched IS NOT NULL) AS my_watched FROM episode WHERE aid = " + QString::number(m_id) + if (!q.exec("SELECT eid, title_english, epno, rating, my_vote, " + " (SELECT MIN(my_watched) FROM " + " (SELECT my_watched FROM file WHERE eid = episode.eid AND my_watched IS NOT NULL " + " UNION SELECT f.my_watched FROM file f JOIN file_episode_rel fer ON (fer.fid = f.fid) WHERE fer.eid = episode.eid AND my_watched IS NOT NULL) AS sq) AS my_watched " + " FROM episode WHERE aid = " + QString::number(m_id) + " ORDER BY epno ASC " "LIMIT " + QString::number(LIMIT) + " " "OFFSET " + QString::number(childCount()))) @@ -186,7 +190,17 @@ MyListEpisodeNode::MyListEpisodeNode(int id, const QList &data, MyList QString MyListEpisodeNode::totalRowCountSql() const { - return "SELECT COUNT(fid) FROM file WHERE eid = " + QString::number(m_id); + return QString( + "SELECT COUNT(fid) " + " FROM ( " + " SELECT fid " + " FROM file " + " WHERE eid = %1 " + " UNION " + " SELECT f.fid FROM file f " + " JOIN file_episode_rel fer ON (fer.fid = f.fid) " + " WHERE fer.eid = %1 " + " ) AS sq ").arg(m_id); } int MyListEpisodeNode::fetchMore() @@ -194,7 +208,14 @@ int MyListEpisodeNode::fetchMore() qDebug() << "fetching some more for eid" << m_id; QSqlQuery q(LocalMyList::instance()->database()->connection()); - if (!q.exec("SELECT fid, group_name, version, quality, my_watched FROM file WHERE eid = " + QString::number(m_id))) + if (!q.exec(QString( + "SELECT fid, group_name, version, quality, my_watched " + " FROM file " + " WHERE eid = %1 " + "UNION " + "SELECT f.fid, f.group_name, f.version, f.quality, f.my_watched FROM file f " + " JOIN file_episode_rel fer ON (fer.fid = f.fid) " + " WHERE fer.eid = %1 ").arg(m_id))) return 0; while (q.next())