similaires à @Andrei réponse K..
Réponse à votre question: Il y a pas équivalent dans Firebird pour FOUND_ROWS() fonction MySQL/déclaration. Solution: Si vous souhaitez connaître le nombre de lignes, demandez au moteur d'exécuter une nouvelle requête pour calculer le nombre de lignes présentes pour une version spéciale de la première requête. Pour des requêtes simples, @Andrei K. answer est exacte, mais pour le cas général, y compris les requêtes avec le groupe par et ayant des clauses utiliser une requête comme ceci:
select count(*)
from (your original query here) q1;
Vous devez exclure le premier/saut et de l'ordre par des clauses si elles sont présentes dans cette requête originale. Donc, pour une requête à la recherche ceci:
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;
la FOUND_ROWS requête équivalente sera:
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
D'après mon expérience, cela fonctionne pour 99,9% des requêtes.
Avertissement Cette approche est très inefficace, utilisez à vos risques et périls.