Mehow 1 Denunciar post Postado Dezembro 23, 2009 Quero exibir os nomes dos alunos, ao lado as notas de cada bimestre. Porém as notas coloquei em uma tabela separada onde é identificada pela id_aluno,id_serie e id_materia. o problema é que como faço o Join das tabelas tem que ter dados na tabela notas, então só me retorna os dados que isneri manualmente Quero saber uma maneira de como vou preencher esses dados, a medida que eu der o insert os dados ficam gravados no BD e tbm ficam sendo exibidos para alterar,,, que nem um data grind mesmo tem como fazer mantendo as notas em outra tabela ou devo colocar as notas e bimestre tudo na tabela do aluno? peguei um datagrid aki e depois vou fuçar nele, o problema por enquanto é sobre os dados essa é a consulta que uso para me trazer os dados $sql = mysql_query(" SELECT n.id_nota,a.codigo,a.nome_aluno, n.bimestre1, n.bimestre2, n.bimestre3, n.bimestre4 FROM notas n INNER JOIN aluno a ON n.aluno_codigo = a.codigo INNER JOIN materia m ON m.id_materia = n.id_materia WHERE a.id_serie = '$idSerie' group by a.nome_aluno")or die(mysql_error()); a tela onde quero entrar com os dados é essa, ao invés de aparecer todos os alunos para eu digitar as notas só aparece o que eu cadastrei manualmente.. o que devo fazer? eu tava pensando que se eu juntar todas as notas e faltas na tabela aluno, quando eu mudar ele de série, as faltas e notas vão ir para a outra série tbm...móh problema Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 23, 2009 o problema é que como faço o Join das tabelas tem que ter dados na tabela notas, então só me retorna os dados que isneri manualmente Nesse caso, você tera que usar LEFT|RIGHT JOIN.. em vez de usar INNER, no teu caso LEFT, pelo que vi por cima da consulta. Compartilhar este post Link para o post Compartilhar em outros sites
Mehow 1 Denunciar post Postado Dezembro 23, 2009 acabei de testar aqui o LEFT JOIN e deu certo http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif , eu nunca tinha usado esse tipo de consulta, dei uma pesquisa e deu certo a solução era a coisa mais simples do mundo e eu perdi tempo fazendo e refazendo tudo quebrando a cabeça putz! mas eh assim mesmo rsrs agora vo fazer o teste se vai ta inserindo e talz valew cara!! abraço Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 23, 2009 Sim, a ideia eh essa.. testou ? so confira ai, se eh LEFT JOIN ou RIGHT JOIN.. olhei muito por cima.. outra alternativa, seria ainda usar sei la.. um IF.. Compartilhar este post Link para o post Compartilhar em outros sites
Mehow 1 Denunciar post Postado Dezembro 23, 2009 Sim, a ideia eh essa.. testou ? so confira ai, se eh LEFT JOIN ou RIGHT JOIN.. olhei muito por cima.. outra alternativa, seria ainda usar sei la.. um IF.. testei, porém achei um problema agora que ele só exibe o nome do aluno se eu tiver cadastrado ao menos o ID dele na tabela de notas, daí vou testar esse RIGHT JOIN agora... qualquer cosia toda vez que eu registrar um novo aluno eu registro o ID dele na tabela de notas e depois quando inserir a nota ele da um update vo testar aki... Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 23, 2009 O correto é utilizar LEFT | RIGHT OUTER JOIN, que vai trazer, caso não exista, o campo preenchido com NULL. http://dev.mysql.com/doc/refman/4.1/pt/join.html Como a dúvida é no MySQL, vou mover para lá. Tópico Movido PHP http://forum.imasters.com.br/public/style_emoticons/default/seta.gif MySQL Compartilhar este post Link para o post Compartilhar em outros sites
Mehow 1 Denunciar post Postado Dezembro 23, 2009 O correto é utilizar LEFT | RIGHT OUTER JOIN, que vai trazer, caso não exista, o campo preenchido com NULL. http://dev.mysql.com/doc/refman/4.1/pt/join.html Como a dúvida é no MySQL, vou mover para lá. Tópico Movido PHP http://forum.imasters.com.br/public/style_emoticons/default/seta.gif MySQL estou com mais um problema... os nomes dos alunos aparecem normal, só que quando insiro as notas está aparecendo nas outras matérias.. por exemplo: se eu entro no 3º Colegial insiro as notas de português, quando entro na parte de matemática ele exibe as notas que coloquei na parte de português a consulta que estou usando é essa SELECT a.codigo,a.nome_aluno, m.descricao as materia, n.bimestre1,n.faltas1, n.bimestre2,n.faltas2, n.bimestre3,n.faltas3, n.bimestre4,n.faltas4 FROM notas n RIGHT JOIN aluno a ON a.codigo = n.aluno_codigo LEFT JOIN materia m ON n.id_materia = m.id_materia WHERE a.id_serie = '$idSerie' GROUP BY a.nome_aluno já tentei colocar ali no WHERE "AND m.id_materia = '$idMat', mas daí não traz nenhum registro Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 27, 2009 Usa só o JOIN, sem right e left. Se não resolver, posta a estrutura das tabelas, como fica o resultado ao fazer a consulta e como você gostaria que ficasse. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Mehow 1 Denunciar post Postado Dezembro 28, 2009 Usa só o JOIN, sem right e left. Se não resolver, posta a estrutura das tabelas, como fica o resultado ao fazer a consulta e como você gostaria que ficasse. Carlos Eduardo eu inseri a nota do aluno de código 10 como se pode ver na imagem Porém quando eu faço a consulta, a nota que inseri na matéria de Português (id 1) aparece tbm nas outras matérias do aluno Consulta SELECT a.codigo, a.nome_aluno, m.id_materia,m.descricao AS materia, n.bimestre1, n.faltas1, n.bimestre2, n.faltas2, n.bimestre3, n.faltas3, n.bimestre4, n.faltas4 FROM aluno a LEFT JOIN notas n ON (n.aluno_codigo=a.codigo) JOIN materia m WHERE a.id_serie = 8 mesmo eu colocando na clausula WHERE para separar por materia, aparece sempre a nota que inseri na outra materia Estrutura das tabelas Compartilhar este post Link para o post Compartilhar em outros sites