xl_delphi 0 Denunciar post Postado Junho 2, 2008 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
NaPraia 12 Denunciar post Postado Junho 2, 2008 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 disciplinanão sei como estão as suas tabelas, mas é algo do tipo Compartilhar este post Link para o post Compartilhar em outros sites
xl_delphi 0 Denunciar post Postado Junho 3, 2008 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
NaPraia 12 Denunciar post Postado Junho 3, 2008 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
xl_delphi 0 Denunciar post Postado Junho 3, 2008 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
NaPraia 12 Denunciar post Postado Junho 3, 2008 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
xl_delphi 0 Denunciar post Postado Junho 4, 2008 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
xl_delphi 0 Denunciar post Postado Junho 5, 2008 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