Аналогично ответу @Andrei K.
Ответ на ваш вопрос: В Firebird нет эквивалента *1006* для FOUND_ROWS () MySQL функция / оператор.
Обходной путь : Если вы смертельно хотите узнать это количество строк, попросите движок запустить новый запрос, чтобы вычислить количество строк, представленных для специальной версии первого запроса.Для простых запросов @ Андрей К. ответ является точным, но для общего случая, включая запросы с группировкой и предложениями, используйте запрос, подобный следующему:
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% запросов.
Предупреждение Этот подход очень неэффективен, используйте на свой страх и риск.