JohaKlotz 0 Denunciar post Postado Julho 14, 2012 Tenho duas tabelas, alunos (campos: id, nome, nota1, ... , nota6, media) e informacoes (campos: id, nome, endereço, email, foto). Preciso de uma pesquisa que capture o aluno da tabela alunos com maior média e ainda retorne o campo foto da tabela informacoes. Consegui fazer a média, mas fiquei perdida tentando capturar junto o campo foto da outra tabela... Vejam como fiz: SELECT nome, AVG(media) FROM alunos GROUP BY nome ORDER BY media DESC se puderem me ajudar com o resto ficarei muito grata! Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Julho 14, 2012 Então, agora relaciona SELECT nome, AVG(media) FROM alunos INNER JOIN informacoes ON alunos.id = informacoes.id GROUP BY alunos.nome ORDER BY media DESC Compartilhar este post Link para o post Compartilhar em outros sites
JohaKlotz 0 Denunciar post Postado Julho 14, 2012 muito obrigada pela ajuda, mas ainda não consegui: MySQL Error#:1052 Column 'nome' in field list is ambiguous Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Julho 15, 2012 Opz, esqueci de especificar a tabela nas colunas do select, faz assim SELECT alunos.nome, AVG(media) FROM alunos INNER JOIN informacoes ON alunos.id = informacoes.id GROUP BY alunos.nome ORDER BY media DESC Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Julho 15, 2012 select * from (SELECT id, AVG(media) media FROM alunos GROUP BY id ORDER BY AVG(media) DESC limit 1)a, informacoes i where a.id = i.id Compartilhar este post Link para o post Compartilhar em outros sites
JohaKlotz 0 Denunciar post Postado Julho 16, 2012 Andrey, agora funcionou mas não retornou junto o campo fotos... giesta, o seu funcionou, mas na hora de selecionar um campo (eu utilizo o dreamweaver cs4) em bindings, aparece Error 1064, syntax error... obs.: pode ser que o campo foto esteja vazio (nao sei se isso interfere) Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 16, 2012 Em que tabela está o campo foto ? Se for alunos ... select * from (SELECT id, foto , AVG(media) media FROM alunos GROUP BY id, foto ORDER BY AVG(media) DESC limit 1)a, informacoes i where a.id = i.id Compartilhar este post Link para o post Compartilhar em outros sites
JohaKlotz 0 Denunciar post Postado Julho 16, 2012 fotos está na tabela informacoes e media está na alunos... Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 16, 2012 Então o SQL do giesta deve trazer. Compartilhar este post Link para o post Compartilhar em outros sites
JohaKlotz 0 Denunciar post Postado Julho 16, 2012 me retorna isso: MySQL Error#: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2 Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 16, 2012 TENTE : select A.*,I.* from (SELECT id, AVG(media) media FROM alunos GROUP BY id ORDER BY AVG(media) DESC limit 1) a, informacoes i where a.id = i.id Não funcinando veja, nome de tabela, nome de campos etc. Compartilhar este post Link para o post Compartilhar em outros sites
JohaKlotz 0 Denunciar post Postado Julho 16, 2012 já to quase desistindo... continua o erro 1064, checkei mil vezes os nomes de campos e tabelas... tudo em ordem... será que não é problema no mysql mesmo? ou talvez alguma incompatibilidade com o dreamweaver? Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Julho 16, 2012 Não veio a foto porque você não pediu pra trazer a foto da tabela na select (eu esqueci de colocar) SELECT alunos.nome, AVG(media), informacoes.foto FROM alunos INNER JOIN informacoes ON alunos.id = informacoes.id GROUP BY alunos.nome ORDER BY media DESC Agora, é bem mais provável ser problema no DW que no MySQL. :huh: Compartilhar este post Link para o post Compartilhar em outros sites
JohaKlotz 0 Denunciar post Postado Julho 16, 2012 Muito obrigada Andrey Knupp (e a todos que me ajudaram), o seu funcionou, embora tivesse pegando as imagens trocadas... só precisei troquei o campo id por nome e voilá... ao final ficou assim: SELECT alunos.nome, AVG(media), informacoes.foto FROM alunos INNER JOIN informacoes ON alunos.nome = informacoes.nome GROUP BY alunos.nome ORDER BY media DESC Uma dúvida que me surgiu... o que irá acontecer se ele tentar puxar uma foto de um aluno que não tiver foto cadastrada? eu preciso fazer alguma coisa para que ele só possam ser lançadas notas de alunos cadastrados? do modo que está, é permitido lançar as notas de alunos não cadastrados em informações... tem como limitar isso? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 16, 2012 Use o outer join nestes casos. Compartilhar este post Link para o post Compartilhar em outros sites
JohaKlotz 0 Denunciar post Postado Julho 17, 2012 Use o outer join nestes casos. Muito obrigada, resolveu o caso! Compartilhar este post Link para o post Compartilhar em outros sites