Ir para conteúdo

POWERED BY:

Arquivado

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

JohaKlotz

[Resolvido] SELECT tabelas1 (por média) + campo tabela2

Recommended Posts

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

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.