[VB6] SELECT COUNT DISTINCT

SYSZEN 23/05/2012 11:53:07
#402547
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
KERPLUNK 23/05/2012 12:04:09
#402548
Separe em duas seleções diferentes:

select count(id) from (Select distinct id from conta)
SYSZEN 23/05/2012 12:17:27
#402550
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
KERPLUNK 23/05/2012 12:34:05
#402553
hmmm, parece que o access não suporta usar uma query como fonte de clausula FROM... Vou pesquisar um outro jeito de fazer isso...
SYSZEN 23/05/2012 12:40:17
#402555
obrigadao <3
CASTELO 23/05/2012 15:50:04
#402575
Resposta escolhida
SYSZEN

eu uso assim sem problemas:
[Ô]SELECT distinct Col1, Col2, count (Col1) as qtd from tabela[Ô]
SYSZEN 23/05/2012 16:01:30
#402576
col1 col2 colunas ? e pq seleccionas 2 ?
CASTELO 23/05/2012 16:27:10
#402584
SYSZEN é um exemplo

você pode usar
[Ô]SELECT distinct Col1, count (Col1) as qtd from tabela[Ô]

Adapta ao seu código ;)
IRENKO 23/05/2012 16:29:36
#402586
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.
SYSZEN 23/05/2012 16:50:06
#402588
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
CASTELO 23/05/2012 17:09:16
#402594
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.

Página 1 de 2 [17 registro(s)]
Tópico encerrado , respostas não são mais permitidas