Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

duvida join

eu tenho a Query

SELECT * FROM ALUNO JOIN TURMA ON turma.id = aluno.id_turma;

Qual a diferença se fosse assim : SELECT * FROM ALUNO JOIN TURMA WHERE turma.id = aluno.id_turma;

O banco não existe, só tentei fazer um exemplo, eu gostaria de entender a diferença do ON e do WHERE

7 respostas

Olá Thiago! Veja bem, o ON é utilizado para representar uma condição do JOIN. Já o where é utilizado para coletar somente informações que atendam tal condição. Então fazer :

SELECT * FROM ALUNO JOIN TURMA WHERE turma.id = aluno.id_turma;

Estaria errado, pois a condição turma.id = aluno.id_turma não é uma condição para coleta de dados, mas sim uma condição estabelecida para o JOIN. Daí o correto seria:

SELECT * FROM ALUNO JOIN TURMA ON turma.id = aluno.id_turma;

Espero ter ajudado. Bons Estudos!

Hum então o ON é usado como parte da sintaxe do JOIN correto e o WHERE será só usado como "filtro" ? E se tem JOIN temos que usar o ON, certo ?

Essa Query entao é valida ?

SELECT * FROM ALUNO JOIN TURMA ON turma.id = aluno.id_turma WHERE aluno.nota >= 7;

Tem vários modos para você fazer junção deste tipo, citarei algumas abaixo:

1- SELECT * FROM TABELA 1 INNER JOIN TABELA 2 ON TABELA1 = TABELA2

2- SELECT * FROM TABELA1,TABELA 2 WHERE TABELA1=TABELA2

Compreende?

Isso mesmo Thiago Dantas, o ON é utilizado com JOIN e a query que você informou está valida

Ok Romario, o ON não é preciso só fazer a comparação por Primary Key e Foreign Key correto ?posso usar outras comparações também ?

solução!

Sim thiago, é possivel, mas essas outras informações tem que se relacionarem.

Ok muito obrigado pela ajuda.