Distinct
10/03/2003
0
Exemplo: select distinct(tipo,numero,ano) from tabela
Tentei fazer assim: select distinct(tipo+numero+ano) from tabela
mas não deu certo, pois o campo ´tipo´ é string e os campos numero e ano são inteiros.
Alguém pode me ajudar? :?
Anonymous
Posts
10/03/2003
Btovix
Espero ter ajudado []´s
11/03/2003
Anonymous
Vou tentar exemplificar o que preciso fazer. Os campos abaixo são chaves primárias:
Tabela A | Tabela B
Tipo Numero Ano | Tipo Numero Ano Nome
P 10 2003 | P 10 2003 Andreia
P 20 2003 | P 10 2003 Jose
P 30 2003 | P 10 2003 Maria
| P 30 2003 Carlos
| P 30 2003 Luiza
Quero contar, da tabela B quantos protocolos diferentes tem, no caso 2.
Se eu fizer: select tipo, count(tipo) from tabela B
ele vai me retornar 5
Quero algo assim: select distinct(tipo+numero+ano) ....
ou: select count(tipo, numero, ano) ....
Consegui esclarecer o que preciso?
11/03/2003
Medreis
vc deve converter os campos para o mesmo tipo de dado string, e cada servidor de BD possui funções para realizar esta conversão
Ex : oracle
select distinct to_char(codigo)||NOME||to_char(data_nascimento)
from funcionario
OK...
11/03/2003
Medreis
Tipo Numero Ano | Tipo Numero Ano Nome
P 10 2003 | P 10 2003 Andreia
P 20 2003 | P 10 2003 Jose
P 30 2003 | P 10 2003 Maria
| P 30 2003 Carlos
| P 30 2003 Luiza
Então de acordo com a necessidade acima vc pode usar um recurso chamado view in line
select xx.tipo, xx.numero, xx.ano , count(*)
from ( select distinct tipo, numero, ano
from tabelab
group by tipo,numero,ano ) xx
group by xx.tipo, xx.numero, xx.ano
Qualquer duvida email-me
11/03/2003
Btovix
Se o resultado que vc quer é 2 então tenta dar um group by com os campos e depois chama no delphi a query.recordcount que vc vai ter a quantidade de vezes que há uma alteração pra aqueles campos. Com isso vc não vai poder apresentar os dados corretamente pra puxar os dados vc vai ter que fazer outra query. Essa query simplismente conta quantos são os dados diferentes.
O group by não deixa repetir os dados que possuem aqueles campos que possuem dados iguais e o recordcount mostra a quantidade apresentada na tela!
sintaxe:
na query: group by campo1, campo2, ... ,campoN
no delphi: variavel:= query.recordcount;
Esta variável vai ter este valor!
Se eu não entendi vai me desculpando só quero ajudar!! :? Boa sorte!
11/03/2003
Anonymous
Marcio, obrigada, por enquanto, mas não funcionou, meu banco de dados é o Paradox
11/03/2003
Adilsond
where not exists (select 1 from tabela A
where a.tipo = b.tipo
and a.numero = b.numero
and a.ano = b.ano)
11/03/2003
Anonymous
Clique aqui para fazer login e interagir na Comunidade :)