ページネーションの理由で、データベースに対して2つのクエリを実行しています。そのため、各クエリはほぼ同じです。私のCOUNT(*)クエリは、非カウントクエリの結果の数を返していません。なぜそうなるのか、私は困惑しています。クエリは以下のとおりです。
SELECT p.host_id, p.rating_support, p.rating_tech, MAX(p.rating_overall) AS rating_overall, p.publish_rating, h.name, prices.price, prices.term_duration
FROM plans p
INNER JOIN hosts AS h ON h.id = p.host_id
INNER JOIN (SELECT plan_id, price, term_duration FROM prices WHERE price > 0 AND price < 50 AND term_duration = 1) prices ON prices.plan_id = p.id
WHERE p.published = 1 AND h.published = 1
GROUP BY p.host_id
ORDER BY rating_overall desc LIMIT 0, 12
SELECT COUNT(*) AS count
FROM plans p
INNER JOIN hosts AS h ON h.id = p.host_id
INNER JOIN (SELECT plan_id, price, term_duration FROM prices WHERE price > 0 AND price < 50 AND term_duration = 1) prices ON prices.plan_id = p.id
WHERE p.published = 1 AND h.published = 1
GROUP BY p.host_id
私はMySQLの専門家ではありません。カウントが正しい数の結果を提供しないことに加えて、非カウントクエリは完全に機能します。
この問題についての光は素晴らしいでしょう。