[VB6] SELECT COUNT DISTINCT
bos pessoal , fiz novo topico que o outro tava a ficar uma confusao e o problema ja passou pa outro lado
bem pessoa eu preciso de saber quantos id[ô]s diferentes tenho numa bd access , o problema e o seguinte
ex : for x=1 to variavel do count distinct
eu contei quantos ids tinha diferentes (sao 3) e fiz o for x=1 to 3 e deu resultado agora o problema e se é mais nao sao 3 xD
logo tenho que fazer um select count(distinct variavel) para funcionar mais nada
vejam
Private Sub diferentes()
conta.RecordSource = [Ô]SELECT COUNT (DISTINCT id) FROM conta as diff[Ô] (o meu select)
conta.Refresh (para actualizar a bd com o select)
dif = conta.Recordset.Fields([Ô]diff[Ô]) (guarda o valor do select)
conta.RecordSource = [Ô]select * from conta[Ô] (ele retira o select senao o select restringe o resto do programa ao select)
End Sub
ele devia ser assim so qe o vb6 com bd de access nao deixa agregar o count(distinct)
e da-me o erro
ERRO :
error 3075 : syntax error (missing operator) in query expression [ô]COUNT (DISTINCT id)[ô]
obrigado pela voça ajuda
bem pessoa eu preciso de saber quantos id[ô]s diferentes tenho numa bd access , o problema e o seguinte
ex : for x=1 to variavel do count distinct
eu contei quantos ids tinha diferentes (sao 3) e fiz o for x=1 to 3 e deu resultado agora o problema e se é mais nao sao 3 xD
logo tenho que fazer um select count(distinct variavel) para funcionar mais nada
vejam
Private Sub diferentes()
conta.RecordSource = [Ô]SELECT COUNT (DISTINCT id) FROM conta as diff[Ô] (o meu select)
conta.Refresh (para actualizar a bd com o select)
dif = conta.Recordset.Fields([Ô]diff[Ô]) (guarda o valor do select)
conta.RecordSource = [Ô]select * from conta[Ô] (ele retira o select senao o select restringe o resto do programa ao select)
End Sub
ele devia ser assim so qe o vb6 com bd de access nao deixa agregar o count(distinct)
e da-me o erro
ERRO :
error 3075 : syntax error (missing operator) in query expression [ô]COUNT (DISTINCT id)[ô]
obrigado pela voça ajuda
Separe em duas seleções diferentes:
select count(id) from (Select distinct id from conta)
select count(id) from (Select distinct id from conta)
Citação::
Separe em duas seleções diferentes:
select count(id) from (Select distinct id from conta)
eu meti assim com o teu exemplo :
conta.RecordSource = [Ô]SELECT Count(*) AS total FROM (SELECT distinct id FROM conta) AS diff[Ô]
conta.Refresh
dif = conta.Recordset.Fields([Ô]total[Ô])
conta.RecordSource = [Ô]select * from conta[Ô]
dame este erro
erro 3131 : syntax error in FROM clause
hmmm, parece que o access não suporta usar uma query como fonte de clausula FROM... Vou pesquisar um outro jeito de fazer isso...
obrigadao <3
SYSZEN
eu uso assim sem problemas:
[Ô]SELECT distinct Col1, Col2, count (Col1) as qtd from tabela[Ô]
eu uso assim sem problemas:
[Ô]SELECT distinct Col1, Col2, count (Col1) as qtd from tabela[Ô]
col1 col2 colunas ? e pq seleccionas 2 ?
SYSZEN é um exemplo
você pode usar
[Ô]SELECT distinct Col1, count (Col1) as qtd from tabela[Ô]
Adapta ao seu código ;)
você pode usar
[Ô]SELECT distinct Col1, count (Col1) as qtd from tabela[Ô]
Adapta ao seu código ;)
Agregar vc consegue, veja um exemplo de um select do meu sistema:
mSql = [Ô][Ô]
mSql = [Ô]SELECT Companhia As Companhia,Count(Companhia) AS ContarDeCompanhia[Ô]
mSql = mSql + [Ô] From Dados[Ô]
mSql = mSql + [Ô] where ((([Dados].Credor)In ([Ô] + Card + [Ô]))) GROUP BY Companhia Order by Count(Companhia) DESC;[Ô]
ou ainda
Rs2.Open [Ô]SELECT [Dados Consulta].ContaSimples,Sum(IIf(Len([Debito])>1,CCur([Debito]),0)) AS DebitoTotal FROM [Dados Consulta] GROUP BY [Dados Consulta].ContaSimples ORDER BY Sum(IIf(Len([Debito])>1,CCur([Debito]),0)) DESC[Ô], ConexaoCartao, adOpenDynamic, adLockOptimistic
talvez possa dar uma luz.
mSql = [Ô][Ô]
mSql = [Ô]SELECT Companhia As Companhia,Count(Companhia) AS ContarDeCompanhia[Ô]
mSql = mSql + [Ô] From Dados[Ô]
mSql = mSql + [Ô] where ((([Dados].Credor)In ([Ô] + Card + [Ô]))) GROUP BY Companhia Order by Count(Companhia) DESC;[Ô]
ou ainda
Rs2.Open [Ô]SELECT [Dados Consulta].ContaSimples,Sum(IIf(Len([Debito])>1,CCur([Debito]),0)) AS DebitoTotal FROM [Dados Consulta] GROUP BY [Dados Consulta].ContaSimples ORDER BY Sum(IIf(Len([Debito])>1,CCur([Debito]),0)) DESC[Ô], ConexaoCartao, adOpenDynamic, adLockOptimistic
talvez possa dar uma luz.
Citação::
SYSZEN é um exemplo
você pode usar
[Ô]SELECT distinct Col1, count (Col1) as qtd from tabela[Ô]
Adapta ao seu código ;)
eu meti assim
[Ô]SELECT distinct id, count (id) as total from conta[Ô]
id (campo da tabela que quero contar os registos diferentes)
conta (tabela)
mas dame erro
fiz um teste aqui num programa que uso para montar as consultas
[Ô]Select distinct dia, count(dia) as total from tb_gradeaula group by dia[Ô]
não esqueça do agrupamento.
[Ô]Select distinct dia, count(dia) as total from tb_gradeaula group by dia[Ô]
não esqueça do agrupamento.
Tópico encerrado , respostas não são mais permitidas