Ir para conteúdo

POWERED BY:

Arquivado

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

Gabriel Manzano

Acredito que seja um INNER...

Recommended Posts

Boa Turma,

 

Estou com uma dúvida em um Select que preciso gerar.

 

Tenho duas tabelas, Alunos e Professores e preciso fazer um select das duas, mas sem multiplicar uma pela outra... como fazemos no inner.

 

==========================

ALUNOS

==========================

ID NOME

----------------------------------------------

01 GABRIEL MANZANO

02 BRUNO TROCOLLI

03 MARINA CAPELOZA

----------------------------------------------

 

 

==========================

PROFESSORES

==========================

ID NOME

----------------------------------------------

01 WALTER FERREIRA

02 SONIA LEITE

03 ANA MARIA

----------------------------------------------

 

 

 

==========================

Resultado

==========================

ID NOME

----------------------------------------------

03 ANA MARIA

02 BRUNO MANZANO

01 GABRIEL MANZANO

03 MARINA MANZANO

01 WALTER FERREIRA

02 SONIA LEITE

----------------------------------------------

 

 

Se eu fizesse somente "select * from alunos, professores order by nome" ele iria me retornar 9 linhas e não 6 como preciso.

Pensei em usar o distinct mas vou tentar por aqui achar uma outra solução.

 

Na verdade eu queria criar uma 3ª tabela (VIEW) que fizesse a junção da tabela Aluno e Professores e ordenasse por nome.

 

 

Fico no arguado.

Muito Obrigado

Gabriel Manzano

Compartilhar este post


Link para o post
Compartilhar em outros sites

select id ,nome from

(

select id, nome from alunos

union all

select id, nome from professores

) as lista

order by nome ASC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Otimo Giesta, isso é novo para mim.

Mas já testei e deu muito certo, obrigado.

 

Só mais uma dúvida, se ainda puder me ajudar.

 

Eu tenho uma tabela de alunos, e cada aluno tem a sua turma.

Eu preciso fazer um select que pegue os ultimos cadastrados alunos de cada turma.

Na tabela alunos eu tenho um campo cahamado DATACAD com a data de cadastro.

 

Eu usei o group by, mas nao deu certo.

select * from alunos group by idturma order by datacad desc.

 

O problema é que esse order by so vem depois do group, ai o group nao vem organizado.

 

Tem alguma solução.

 

Muito obrigado novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usei isso...

 

Tem alguma solução mais simples?

 

SELECT alu.*

FROM alunos alu

INNER JOIN (SELECT MAX(idaluno) as idalunoFROM alunos group by idturma) alu2

ON alu2.idpost = alu.idpost

 

Att

Manzano

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem outros jeitos de fazer mas esse eu acredito q seja o mais simples mesmo. Unica coisa q eu mudaria ai eh o uso do WHERE em vez do INNER JOIN(q pra mim eh coisa de faculdade) mas o resultado final seria o mesmo, talvez soh um pouco mais rapido

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.