давно заметил странную вещь, что со "сложными" (вложенность, объединения) запросами pager не хочет работать. до сих пор как-то обходился переписыванием логики, а тут надоело разбираться и упрощать каждый раз. полез в исходники и нашел небольшой шедевр:
if (!isset($count_query)) {
$count_query = preg_replace(array('/SELECT.*?FROM /As', '/ORDER BY .*/'), array('SELECT COUNT(*) FROM ', ''), $query);
}
вне всяких сомнений круты следующие вещи:
- использование звездочки;
- и дописывание селекта перед скобками запроса, что чревато во вложенных запросах;
- необходимость писать ключевые слова с большой буквы.
после замены на простое:
if (!isset($count_query)) {
$count_query = "SELECT COUNT(1) FROM (" . $query . ") v";
}
все заработало как часы.
зы. теперь, кстати, необязательно писать в запросе ключевые слова с большой буквы.