Подобно @Andrei К. ответа.
Ответ на ваш вопрос: Там в не эквивалент в Firebird для FOUND_ROWS() функция MySQL/заявление.
Временное решение: Если вы хотите узнать это количество строк, попросите двигатель запустить новый запрос, чтобы вычислить количество строк, присутствующих для специальной версии первого запроса. Для простых запросов, @Andrei K. answer является точным, но в общем случае, в том числе запросов с группой по и имеющим пунктам использовать запрос следующим образом:
select count(*)
from (your original query here) q1;
Вы должны исключить первый/пропустить и порядок пунктов если они присутствуют в этот оригинальный запрос. Таким образом, для запроса ищет это:
select first 10 skip 20 pd.productcode, extract(year from ph.purchasedate) year, sum(pd.quantity) year_quantity
from purchase_details pd
inner join purchase_header ph
on ph.id = pd.purchase_id
where ph.cancelled = 0
and ph.salesman = 10
group by pd.productcode, extract(year from ph.purchasedate)
having sum(pd.quantity) > 1000
order by sum(pd.quantity) desc;
в FOUND_ROWS эквивалентный запрос будет:
select count(*)
from (
select pd.productcode, extract(year from ph.purchasedate) year, sum(pd.quantity) year_quantity
from purchase_details pd
inner join purchase_header ph
on ph.id = pd.purchase_id
where ph.cancelled = 0
and ph.salesman = 10
group by pd.productcode, extract(year from ph.purchasedate)
having sum(pd.quantity) > 1000
) q1
Из моего опыта, это работает на 99,9% запросов.
Предупреждение Этот подход очень неэффективен, используйте его на свой страх и риск.