Ir para conteúdo

POWERED BY:

Arquivado

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

xl_delphi

como usar distintic na tabela

Recommended Posts

Boa tarde gente,

 

Estou com uma dificuldade... tenho uma tabela de notas onde existem os campos aluno, serie, disciplina, tarefas da disciplina, as 4 notas e a média... Para cada disciplina existem várias tarefas ex.: prova, leitura etc... Cada tarefa tem 4 notas. O problema é q toda vez q salva as notas de uma determinada tarefa, é repetido então o codigo do aluno,serie e disciplina o q muda é somente a tarefa e as notas...

 

Ex. de como fica na tabela:

aluno = A, serie = 1 , disciplina = 1 , tarefa = 1, nota 1= 10 , nota 2 =10, nota 3=10 , nota4 =10, media=10

aluno = A, serie = 1 , disciplina = 1 , tarefa = 2, nota 1= 10, nota 2 =10, nota 3=10 , nota4 =10, media=10

 

Tenho q fazer o boletim, mas a disciplina ñ pode vir duplicada... Eu fiz um join na tabela para pegar a descricao das tabelas relacionadas, mas ñ sei como adicionar o distintic junto com o join...

 

Espero q alguém me ajude mais uma vez... Desde já agradeço!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

no caso do boletim, é melhor você fazer dois selects, um para o cabeçalho (aluno, série)

select aluno, serie, 'outros dados' from tabela_aluno where aluno = 'A'
e a outra que você está parcialmente usando, já que é para o boletim, não precisa de nota por nota, só a média

select disciplica, avg((nota1 + nota2 + nota3+ nota4)/4) from tabela_notas
where aluno = 'A'
group by disciplina
não sei como estão as suas tabelas, mas é algo do tipo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi NaPraia,

 

Primeiro, obg pela atenção... Olha amigo Não deu certo... nunca usei avg ou group by, ainda sou iniciante no assunto, mas acho q ñ deu certo por causa das minhas tabelas... No caso da tabela_aluno, ela ñ é relacionada com outras tabelas, no ex. q você colocou pelo q entendi na primeira select eu iria selecionar os dados do aluno e a serie q ele está matriculado... O problema é q no meu sistema eu tenho duas telas, a do cadastro e a da matrícula.

 

Na tabela de notas eu tenho todos os dados q eu preciso p/ o boletim, tipo: codaluno, codserie, coddisciplina, codtarefa,ano

Como nas tabelas relacionadas eu salvo apenas o codigo ex. codaluno, então tive q fazer um inner join para obter o nome do aluno por ex. Mas como falei anteriormente, o único problema é q preciso q esses dados ñ saiam repetidos. No momento

eles estão saindo assim:

 

aluno = A, serie = 1 , disciplina = 1 , tarefa = 1, nota 1= 10 , nota 2 =10, nota 3=10 , nota4 =10, media=10

aluno = A, serie = 1 , disciplina = 1 , tarefa = 2, nota 1= 10 , nota 2 =10, nota 3=10 , nota4 =10, media=10

 

Daí no relatório sai o nome do aluno 2x, a serie 2x e eu ñ qria q isso acontecesse... Eu preciso q saia assim no relatório:

 

aluno serie

Maria 1ª Serie

 

disciplina = Português

tarefa = ficha de leitura nota1= 10 nota2 = 10 nota3= 10 nota4 = 10

tarefa = redação nota1= 10 nota2 = 10 nota3= 10 nota4 = 10

tarefa = prova nota1= 10 nota2 = 10 nota3= 10 nota4 = 10

 

Após isso eu tiro a média das tarefas...

 

Eu fiz um inner join q ficou assim:

 

select nota.codescola, nota.codaluno, nota.ano, nota.periodo, nota.coddisciplina, nota.codtarefa, nota.serie, nota.turno,

nota.codserie, nota.turma, nota.nota_1, nota.nota_2, nota.nota_3, nota.nota_4, nota.media, nota.recuperacao1,

nota.recuperacao2,escola.razao_social, aluno.nome, aluno.endereco, aluno.data_nasc, aluno.nome_pai, aluno.nome_mae,

tarefas.descricao_tarefa,disciplinas.descricao, series.grau

from nota,escola,aluno,tarefas,disciplinas,series

where nota.codescola=escola.codigo and nota.codaluno=aluno.codigo and nota.coddisciplina=disciplinas.codigo and nota.codtarefa=tarefas.codigo and nota.codserie=series.codigo

 

Mesmo c/ esse join, vem dados repetidos, como o nome do aluno, o nome da disciplina e eu ñ qria... Por isso achei q poderia aproveitar esse join e acrescentar distintic... mas ñ deu certo.... Não sei o q fazer... Por favor se você tiver alguma idéia de como me ajudar eu te agraço muito!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

por isso que eu falei para você fazer dois selects,

o primeiro você vai pegar só o nome do aluno e a disciplina

e no outro você traz os dados que já está trazendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi NaPraia, beleza?

 

Eu acho q você está certo, estou quase conseguindo chegar ao meu objetivo,só faltam alguns detalhes q gostaria q você me ajudasse a esclarecer,pois nunca tinha feito isso antes...

 

Eu coloquei 2 adoquery no quickreport... O primeiro eu selecionei os dados q preciso q apareça no relatório. No segundo eu coloquei o avg e group by... Até aí deu certo, cada adoquery fez sua função, mas no quickreport eu só posso direcionar o dataset p/ 1 tabela, então ou eu visualizo todas as disciplinas com as tarefas, ou eu visualizo todas as médias do aluno e apenas 1 disciplina e 1 tarefa...

 

Por favor, se você puder me ajudar + uma vez, eu te agradeço muito!!! Eu estou quase lá... só falta esse pequeno detalhe do quickreport... eu acho!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

foi mal, quickreport não é comigo

em algum lugar vai ter como mudar a consulta do adoquery e personalizar.

boa sorte

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem problema!!! A ajuda q você me deu, já deu um empurrãozinho... Valeu!!!

 

Se alguém mais puder me ajudar, eu agradeço... estou precisando muito dessa informação...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi gente bom dia,

 

Desculpem a minha insistência, mas estou precisando muito de ajuda... Se alguém tiver alguma sugestão, por favor me ajudem!!!

 

Em uma pesquisa, achei uma situação bem parecida com a minha... Mas o codigo é p/ mysql...

 

SELECT u.nome,GROUP_CONCAT(DISTINCT t.telefone)

FROM usuarios AS u

INNER JOIN usuarios_telefones AS ut

ON u.id_usuario=ut.id_usuario

INNER JOIN telefones AS t

ON ut.id_telefone=t.id_telefone

GROUP BY u.id_usuario

 

Gostaria de saber se tem alguma função parecida p/ usar c/ sql.

 

Obg...

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.