Query - trazer somente os 10 primeiros registros encontrados

Delphi

11/11/2004

Qual comando eu uso dentro de uma query para q me traga somente os 10 primeiro resgistros encontrados, minha guery está assim agora:

Select Clientes.Nome,Sum(Pedidos.Geral) as Total
From Clientes,Pedidos
Where Pedidos.CodCliente = Clientes.Codigo and
Pedidos.DataPed Between :VarDataI and :VarDataF
Group By Clientes.Nome


Janete

Janete

Curtidas 1

Melhor post

Gandalf.nho

Gandalf.nho

11/11/2004

Qual o banco de dados? Nem todos os bancos tem esse recurso.


GOSTEI 1

Mais Respostas

Fer_nanda

Fer_nanda

11/11/2004

use select top

Select top 10 Clientes.Nome,Sum(Pedidos.Geral) as Total
From Clientes,Pedidos
Where Pedidos.CodCliente = Clientes.Codigo and
Pedidos.DataPed Between :VarDataI and :VarDataF
Group By Clientes.Nome

Até


GOSTEI 1
Fernando

Fernando

11/11/2004

se vc estiver usando o firebird use

select first 10 cliente.codigo,cliente.razao_social from cliente


GOSTEI 1
Gurc

Gurc

11/11/2004

Só complementando, se você for ligar isso a um clientdataset poderá usar a propriedade PacketRecords. Deste modo, se você a configurar como 10, serão trazidos apenas 10 registros. Quando o décimo primeiro for solicitado serão trazidos mais dez. Isso acontece através do ClientDataSet, ligado a um DataSetProvider e um DataSet qualquer como TSqlQuery.
Se quiser mais detalhes estamos aí.
Até mais,
Gustavo Royer Chaurais


GOSTEI 1
Janete

Janete

11/11/2004

Olá, estou usando paradox e não deu certo ainda, testei tb com o top e não deu


GOSTEI 1
Placido

Placido

11/11/2004

Utilizo o firebird e executo esta query no ibexpert e dá erro, preciso selecionar apenas o primeiro registro, existe algo errado?


select first 1 pdi_datamovto
from proddiario
where prod_codigo = 1

Grato

Plácido


GOSTEI 1
Gandalf.nho

Gandalf.nho

11/11/2004

O FIRST só funciona no FB 1.5, provavelmente você tem o FB 1.03


GOSTEI 1
Janete

Janete

11/11/2004

sobe


GOSTEI 1
Gurc

Gurc

11/11/2004

Já tentaram usar o limit?
Exemplo:
select
  *
from
  tabela
limit 1, 5

em muitos bancos isso funciona.

Gustavo Royer Chaurais


GOSTEI 1
Gandalf.nho

Gandalf.nho

11/11/2004

Acho que paradox não tem esse recurso de limitar o nº de registros.


GOSTEI 1
Massuda

Massuda

11/11/2004

Janete,

O [b:fb5df12287]Local SQL[/b:fb5df12287] usado pelo o Paradox é bem limitado; a definição de SELECT usado por ele é:

SELECT [DISTINCT] * | column_list

FROM table_reference
[WHERE predicates]
[ORDER BY order_list]
[GROUP BY group_list]
[HAVING having_condition]


portanto não tem como fazer o que você quer de modo simples.


GOSTEI 1
Placido

Placido

11/11/2004

Galera utilizo o firebird versão 1.5.
O comando first não está funcionando.
Grato
Plácido


GOSTEI 1
Paulo_amorim

Paulo_amorim

11/11/2004

Olá

Ele dá erro na query ou não traz corretamente?

Até+


GOSTEI 1
Placido

Placido

11/11/2004

Dá erro na query linha 1 char 13.
Grato

Plácido


GOSTEI 1
Massuda

Massuda

11/11/2004

Dá erro na query linha 1 char 13.


Isso não ajuda muito... post aqui seu script SQL se ele não for muito grande ou pelo menos a linha 1 do seu script.


GOSTEI 1
Gandalf.nho

Gandalf.nho

11/11/2004

A sintaxe está correta. O nome do campo está correto? Outra coisa, a base de dados está no formato do FB 1.5 ou é uma tabela Interbase não convertida?


GOSTEI 1
Janete

Janete

11/11/2004

Olá Pessoal, ainda não consegui resolver meu problema, uso paradox, é possível fazer um filtro conforme minha pergunta inicial (abaixo):

Qual comando eu uso dentro de uma query para q me traga somente os 10 primeiro resgistros encontrados, minha guery está assim agora:

Select Clientes.Nome,Sum(Pedidos.Geral) as Total
From Clientes,Pedidos
Where Pedidos.CodCliente = Clientes.Codigo and
Pedidos.DataPed Between :VarDataI and :VarDataF
Group By Clientes.Nome


GOSTEI 1
Gandalf.nho

Gandalf.nho

11/11/2004

Conforme respondido, o Paradox não tem suporte para isso via SQL. Diretamente na aplicação poderia ser feito via código. Uma sugestão seria ClientDataSet com RecordPackets setado em 10...


GOSTEI 1
Placido

Placido

11/11/2004

Utilizo o firebird e executo esta query no ibexpert e dá erro na lina1 coluna 13, o que está errado?


select first 1 pdi_datamovto
from proddiario
where prod_codigo = 1

Grato

Plácido


GOSTEI 1
Gandalf.nho

Gandalf.nho

11/11/2004

A sintaxe está certa, o nome do campo na primeira linha está correto?


GOSTEI 0
Massuda

Massuda

11/11/2004

Placido,

Minha sugestão é que você revise sua instalação do FB, em particular checar se as versões do fbclient.dll e do gds32.dll conferem com a do servidor (v.1.5 como você mesmo informou).

Como o erro é indicado na coluna 13, isso sugere que o token ´first´ não está sendo reconhecido e a única forma disso ocorrer é você estar usando um engine anterior à versão 1.5 do FB.

Um teste adicional serial você remover o ´first 1´ da sua query e ver se ela executa sem problemas.


GOSTEI 1
Massuda

Massuda

11/11/2004

Uma outra possibilidade... sua query
select first 1 pdi_datamovto 
from proddiario 
where prod_codigo = 1 

não deveria especificar um critério de ordenação via cláusula ´ORDER BY´?

Não vejo como selecionar o primeiro item da query se não existir um critério de ordenação.


GOSTEI 1
POSTAR