Qual comando devo usar
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
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
Curtidas 0
Respostas
Emerson Nascimento
23/06/2009
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
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
GOSTEI 0
Tecnofine
23/06/2009
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
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
GOSTEI 0
Danielrsanches
23/06/2009
é 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 !!
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 !!
GOSTEI 0
Tecnofine
23/06/2009
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...
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...
GOSTEI 0
Tecnofine
23/06/2009
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...
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...
GOSTEI 0