Comando Limit = First SQL onde utilizar ?

Esta semana eu precisei fazer um gráfico dos 10 produtos mais vendidos de uma empresa.

Utilizei a expressão Limit na Sql para limitar apenas a quantidade de registros (10 registros) que eu estava precisando e estava dando erro.

Depois de algum tempo de pesquisa, entendi o erro.
A expressão Limit que eu utilizava em PostgreSQL é incompatível com o Firebird.

No Firebird temos que utilizar a expressão First, Exemplo:

SELECT FIRST 10 cup_item.produto, cup_item.descricao, SUM(cup_item.qtde) as Quantidade,cup_item.unitario,
  SUM(cup_item.total), grupo.descricao as Desc_gru
FROM  produto, cup_venda, cup_item, grupo
WHERE  produto.codigo=cup_item.produto
AND cup_item.id_venda=cup_venda.id_venda
AND produto.grupo=grupo.codigo
AND cup_venda.data >= :dInicio
AND cup_venda.data <= :dFinal
GROUP BY  cup_item.produto, cup_item.descricao, Desc_gru, cup_item.unitario
ORDER BY  quantidade desc

Exemplo em PostgreSQL com o comando Limit:

SELECT cup_item.produto, cup_item.descricao, SUM(cup_item.qtde) as Quantidade,cup_item.unitario,
  SUM(cup_item.total), grupo.descricao as Desc_gru
FROM  produto, cup_venda, cup_item, grupo
WHERE  produto.codigo=cup_item.produto
AND cup_item.id_venda=cup_venda.id_venda
AND produto.grupo=grupo.codigo
AND cup_venda.data >= :dInicio
AND cup_venda.data <= :dFinal
GROUP BY  cup_item.produto, cup_item.descricao, Desc_gru, cup_item.unitario
ORDER BY  quantidade desc
LIMIT 10

Então se na nossa tabela existir milhares de registros, não importa, pois só serão exibidos os 10 registros determinados pelo comando Limit ou First.

Comentários