]> Some of my projects - localmylist.git/commitdiff
Use file_episode_rel to list files for which an episode is not the main episode
authorAPTX <marek321@gmail.com>
Sun, 8 Jul 2012 18:03:47 +0000 (20:03 +0200)
committerAPTX <marek321@gmail.com>
Sun, 8 Jul 2012 18:03:47 +0000 (20:03 +0200)
localmylist/mylistnode.cpp

index 764c91e099eb12be06bf37901b41b3185912755f..1b36156cfffb8a9c0701258129fc73d90a040048 100644 (file)
@@ -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<QVariant> &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())