Dúvida com instrução SQL...
16/05/2008
0
Tenho duas tabelas: cad_alunos e faltas
a cad_alunos é assim:
Codigo | matricula | nome_aluno | endereco | ...
1 02700T andre xxx
2 02701T joão xxx
3 02702T maria xxx
4 02703T jose xxx
5 02704T ana xxx
a faltas é assim:
codigo | matricula | data
x 02700T 01/05/2008
x 02702T 02/05/2008
x 02702T 03/05/2008
x 02704T 04/05/2008
x 02704T 05/05/2008
x 02704T 06/05/2008
Eu Preciso fazer um select onde o resultado fosse algo assim:
Codigo | matricula | nome_aluno | qtd_faltas | ...
1 02700T andre 1
2 02701T joão 0
3 02702T maria 2
4 02703T jose 0
5 02704T ana 3
Será q alguém pode me ajudar, pois tenter de algumas formas aqui... mas não saiu exatamente como o modelo acima...
André Maretti
Posts
16/05/2008
Paulo
16/05/2008
André Maretti
segue a forma que eu fiz... baseado na sua dica..
Query_Relatorio_Alunos.SQL.Clear; Query_Relatorio_Alunos.SQL.Add(´SELECT A.MATRICULA, A.nome_aluno, A.TELEFONE_RESIDENCIAL, A.TELEFONE_COMERCIAL, A.CELULAR, SUM(F.data) AS QTD_FALTA FROM zeus_cad_alunos A INNER JOIN zeus_faltas F ON(F.MATRICULA = A.MATRICULA)´); Query_Relatorio_Alunos.Open;
Mas ele dá a seguinte mensagem de erro:
Tentei fazer uns Groupby aqui... mas sem sucesso...
será que alguém pode me dar mais um help.
Detalhe: eu preciso que saia uma lista com todos os alunos, mesmo aqueles que não possuem nenhuma falta, saindo para esses.. ZERO na coluna quantidade de faltas... Ou seja.. é preciso contar para cada aluno quantos registro tem na tabela Faltas com a matrícula do respectivo aluno.
Desde já agradeço...
André.
16/05/2008
Rjun
SELECT Al.Matricula, Al.Nome_Aluno, Al.Telefone_Residencial, Al.Telefone_Comercial, Al.Celular, COUNT(Fa.Data) AS Qtd_Falta FROM Cad_Alunos Al JOIN Faltas Fa ON Fa.Matricula = Al.Matricula GROUP BY Al.Matricula, Al.Nome_Aluno, Al.Telefone_Residencial, Al.Telefone_Comercial, Al.Celular,
17/05/2008
André Maretti
Tipo assim:
Minha tabela de alunos é assim: (os tracinhos claro não existem.. é só pra dar o alinhamento... rs)
Codigo | matricula | nome_aluno | endereco | ...
---1------ 02700T----- andre--------- xxx
---2------ 02701T----- joão----------- xxx
---3------ 02702T----- maria--------- xxx
---4------ 02703T----- jose----------- xxx
---5------ 02704T----- ana------------ xxx
Minha Tabela de Faltas é assim:
codigo | matricula | data
---x------02700T----01/05/2008
---x------02702T----02/05/2008
---x------02702T----03/05/2008
---x------02704T----04/05/2008
---x------02704T----05/05/2008
---x------02704T----06/05/2008
Percebe que o aluno joão, matrícula 02701T não possui nenhumja falta. A mesma coisa acontece com o aluno josé, matrcícula 02703T.
Com o SQL assim:
SELECT Al.Matricula, Al.Nome_Aluno, Al.Telefone_Residencial, Al.Telefone_Comercial, Al.Celular, COUNT(Fa.Data) AS Qtd_Falta FROM Cad_Alunos Al JOIN Faltas Fa ON Fa.Matricula = Al.Matricula GROUP BY Al.Matricula, Al.Nome_Aluno, Al.Telefone_Residencial, Al.Telefone_Comercial, Al.Celular
o resultado da tabela fica assim: (ocultei os campo de telefones para economizar espaço)
Codigo | matricula | nome_aluno | qtd_faltas | ...
---1------02700T-----andre-----------1
---3------02702T-----maria-----------2
---5------02704T-----ana-------------3
repare que os alunos que não possuem faltas, como é o caso do João (02701T) e do José (02703T) não aparecem no resultado.
O que eu preciso é de uma tabela assim:
Codigo | matricula | nome_aluno | qtd_faltas | ...
---1------02700T-----andre-----------1
[b:2fcc6f07dd]--2-----02701T----joão----------0 [/b:2fcc6f07dd]
---3------02702T-----maria-----------2
[b:2fcc6f07dd]--4-----02703T----jose----------0 [/b:2fcc6f07dd]
---5------02704T-----ana-------------3
Onde os alunos que não possuem nenhuma falta apareçam na tabela com a quantidade de faltas = 0.
Agradeço ai pela força... mas será que alguém ainda tem alguma de como fazer?
Abraços.[b:2fcc6f07dd][/b:2fcc6f07dd]
Clique aqui para fazer login e interagir na Comunidade :)