Струва ми се, че трябва да GROUP BY a.id, c.id -- групиране по a.id означава само, че обикновено ще имате няколко c.id s за a.id , а вие просто получавате "случаен" един от тях. Това изглежда като въпрос на основна коректност. След като поправите това, начален SELECT COUNT(*) FROM и т.н., тогава определено трябва да ви даде броя на редовете, които следната заявка ще върне, за да можете да подготвите съответно своя пейджър.