Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dataset

Count de uma coluna. Mesma tabela

Recommended Posts

Pessoal... preciso de ajuda.

 

Tenho essa consulta no banco:

SELECT codEnt, codNot, codMat FROM Notas WHERE codEnt=4 AND semCad=1

 

Vai resultar nessa tela:

consulta1.jpg

 

codEnt = Codigo do aluno;

codNot = Nota cadastrada pro aluno;

codMat = Código da matéria;

 

Veja que o código da matéria ta repetindo, eu gostaria que tivesse uma nova coluna mostrando a quantidade de repitições do lado. Por exemplo:

novacoluna.jpg

 

O codigo da matéria 1 repetiu 3 vezes, da matéria 2 repetiu 2 vezes e da matéria 3 repetiu 1 vez. Eu queria que aparecesse do lado.

 

Vai me ajudar muito. Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se no access vai aceitar esse subselect, e não estou com o access instalado aqui, mas, no MYSql ou SQL Server pode ser feito dessa forma:

 

SELECT N.CodEnt, N.CodNot, N.CodMat, (SELECT COUNT(NN.CodMat)
                                     FROM NOTAS NN
                                     WHERE NN.Codmat = N.CodMat
                                       AND NN.CodEnt = N.CodEnt
                                    )Contagem
FROM NOTAS N
WHERE N.CodEnt=4
 AND N.SemCad = 1;

 

Testa aí, imagino que pode dar certo, pois é SQL puro....

 

Claro, que em termos de desempenho isso não é aconselhável, pois se você tiver uma base de dados com 1 milhão de tuplas, pra cada linha ele vai rodar um subselect que tem filtros de comparação, agora, para bases de dados pequenas, é quase que imperceptível

Compartilhar este post


Link para o post
Compartilhar em outros sites

João Paulo...

 

Gostaria muito que você me ajudasse.

 

Eu rodei o seu SQL.

SELECT N.codEnt, N.codNot, N.codMat, (SELECT COUNT(NN.codMat)
FROM NOTAS NN
WHERE NN.codMat = N.codMat AND NN.codEnt = N.codEnt) AS Contagem
FROM NOTAS AS N
WHERE (((N.codEnt)=4) AND ((N.semCad)=1) AND ((N.codFas)=1));

 

Veja o resultado:

sql1.jpg

 

O codMat 1 ta repetindo 3 vezes. Mas na consulta que você me mandou ta contanto 9 vezes.

 

Veja a minha tabela (Fiz um filtro pra mostrar apenas o codEnt=4 e nomSem=1):

sqlcompleto.jpg

 

Eu vou usar no meu sistema escolar que to montando (o Aluno Exemplo 01 é o codEnt=4):

notas.jpg

 

Deu certo amigo...

 

Eu coloquei mais um controle no SQL que você mandou... Deu certinho:

 

SELECT N.codNota, N.codEnt, N.codNot, N.codPes, N.codMat, N.semCad, N.nomData, (
       	SELECT COUNT(NN.codMat) FROM NOTAS NN
       	WHERE NN.codMat = N.codMat AND NN.codEnt = N.codEnt AND NN.semCad = N.semCad) AS Contagem
FROM NOTAS AS N
WHERE (((N.codEnt)=4) AND ((N.semCad)=1) AND ((N.codFas)=1));

 

 

Obrigado, vou dar continuidade no projeto.

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Imagino que este problema já tenha sido resolvido, mas segue mais uma possibilidade de resolução:

 

 

SELECT 
tblNotas.CodEnt,
tblNotas.CodNot,
tblNotas.CodMat,
DCount("CodMat","tblNotas","[CodMat]=" & [CodMat]) AS NewCol
FROM tblNotas
WHERE tblNotas.CodEnt=4

[/Code]

 

 

 

Sem mais,

 

Julien Sorel

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.