Parece-me que você deveria
GROUP BY a.id, c.id
-- agrupamento por a.id
significa apenas que você normalmente terá vários c.id
s por a.id
, e você está apenas recebendo um "aleatório" deles. Isso parece uma questão de correção básica. Depois de corrigir isso, um SELECT COUNT(*) FROM
inicial etc etc deve então definitivamente fornecer o número de linhas que a consulta a seguir retornará, para que você possa preparar seu pager de acordo.