Wygląda na to, że powinieneś GROUP BY a.id, c.id -- grupowanie według a.id oznacza tylko, że zazwyczaj będziesz mieć kilka c.id s na a.id , i otrzymujesz po prostu „losowy” jeden z nich. To wydaje się być kwestią podstawowej poprawności. Gdy to naprawisz, początkowy SELECT COUNT(*) FROM itp. itp. powinny wtedy zdecydowanie podać liczbę wierszy, które zwróci następujące zapytanie, dzięki czemu możesz odpowiednio przygotować swój pager.