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())))
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()
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())