Fórum Qual comando devo usar #371517

23/06/2009

0

Então pessoal, preciso filtrar no relatório usando query onde mostro quantidade maior e menor do campo repetido
por exemplo

SERVIÇO:
1 manicure
2 corte
3 manicure
4 manicure
5 pintor
6 pintor

nesse caso que mostre no relatório a ´manicure´ já que mais repete e no outro relatório o ´corte´ já menos repete

só não sei como colocar no comando sql....
Uso delphi 7 e interbase 6.5


Tecnofine

Tecnofine

Responder

Posts

23/06/2009

Emerson Nascimento

para obter quantas vezes o valor está repetido:

não sei se o interbase tem comando para limitar o numero de registros.
no FB seria:
[i:bf8b278000]select [b:bf8b278000]first 1[/b:bf8b278000] count(*), servico from tabela group by servico order by 1[/i:bf8b278000] para obter o que menos se repete e
[i:bf8b278000]select [b:bf8b278000]first 1[/b:bf8b278000] count(*), servico from tabela group by servico order by 1 desc[/i:bf8b278000] para obter o que mais se repete

se o interbase não possuir o comando first (ou top, ou limit), faça em dois passos:
[i:bf8b278000]select count(*), servico from tabela group by servico order by 1[/i:bf8b278000] e pegue o primeiro registro para obter o que menos se repete e
[i:bf8b278000]select count(*), servico from tabela group by servico order by 1 desc[/i:bf8b278000] e pegue o primeiro registro para obter o que mais se repete


Responder

Gostei + 0

23/06/2009

Tecnofine

Comandos first top e limit não funcionam

então usei esse
select count(*), servico from tabela group by servico order by 1
porem
mostra assim:

count service
1 manicure
1 corte
5 null

Poderia me explicar melhor sou iniciante nesse assunto


Responder

Gostei + 0

23/06/2009

Danielrsanches

é o seguinte ...

se vc utilizar count(*), exibirá o total de registros filtrados ...

utilize ao invés de * o nome do campo que deseja ... tipo:

se o campo onde contem os serviços (manicure,corte...) se chama SERV faça assim ...

select count(SERV), SERV from SERVICOS group by SERV


abraços !!


Responder

Gostei + 0

23/06/2009

Tecnofine

Obrigada por rresponder e deu certo!

Agora outra duvida:
Exemplo:

count service
7 manicure
3 corte
1 penteado

Que uso para receber uma variavel serviço para listar no relatório todos os registros como (cliente, telefone, id) de uma tabela e juntar (serviço, data, id_ag) de outra tabela onde id = id_ag.
Porém tem que ser filtrado pelo serviço que é manicure (porque foi esse maior).

Aguardo a resposta...


Responder

Gostei + 0

24/06/2009

Tecnofine

Deu certo depois de várias adpatações...
primeiro eu fiz assim

var mais:string;//declarei uma variavel
begin
ibquery1.close;
ibquery1.SQL.Clear;
ibquery1.SQL.Add(´select count(service), service from itens_historico group by service order by 1 desc´);
ibquery1.Open;

mais:= IBQuery1.Fields[1].AsString;//recebe o qual service é que mais repete

//depois fiz uma consulta usando atraves dessa variavel
ibquery1.close;
ibquery1.SQL.Clear;
ibquery1.SQL.Add(´select ITENS_HISTORICO.service, HISTORICO.cod_his, HISTORICO.cod_cli, HISTORICO.nome_cli, HISTORICO.tel_cli, ITENS_HISTORICO.cod, ITENS_HISTORICO.cod_his, ITENS_HISTORICO.data, ´);
ibquery1.SQL.Add(´ITENS_HISTORICO.descricao, ITENS_HISTORICO.funcionario, ITENS_HISTORICO.horario, ITENS_HISTORICO.situacao from HISTORICO , ITENS_HISTORICO ´);
ibquery1.SQL.Add(´where HISTORICO.cod_his = ITENS_HISTORICO.cod_his and itens_historico.service =´+#39+mais+39);
ibquery1.Open;

Obrigada a todos que me ajudaram...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar