Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Porque utilizar JOINs?


jose.rob.jr

Pergunta

Sinceramente, não consigo entender...

SELECT a.*, b.*
FROM a LEFT JOIN b ON a.common_id = b.common_id
WHERE b.something = 1
Não vai dar exatamente na mesma coisa que a sql abaixo?
SELECT a.*,b.*
FROM a, b
WHERE a.common_id = b.common_id AND b.something = 1

Qual é a vantagem de usar o join? :wacko:

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'jose.rob.jr'!

...Não vai dar exatamente na mesma coisa que a sql abaixo?...
Não. Não vai. o LEFT JOIN retorna todas as linhas que existirem na tabela da esquerda (no seu caso a tabela "a") e todas as linhas da tabela da direita (tabela "b") que estiverem associadas a tabela "a". Se não houver correspondente na tabela da direita (a tabela "b") ele vai trazer nulo para poder completar o resultado.

Assim, igmagine as tabelas "a" e "b" como sendo as tabelas donos de carro e carros, respectivamente:

tabela a
id | nome
01 | joao
02 | maria
03 | jose

tabela b
id | id_a | carro
01 | 01   | gol
02 | 03   | palio
Se eu fizer o select com left join, terei:
SELECT nome, carro 
FROM a
LEFT JOIN b ON b.id_a = a.id
Teremos como resultado
nome  | carro
joao  | gol
maria |
jose  | palio
A forma como você representou o seu segundo sql em
SELECT a.*,b.*
FROM a, b
WHERE a.common_id = b.common_id AND b.something = 1
É a forma de representação equivalente ao INNER JOIN que é diferente do LEFT JOIN. No INNER JOIN só serão retornadas as linhas que existirem em ambas as tabelas. Usando o exemplo acima modificado para INNER JOIN, teremos:
SELECT nome, carro 
FROM a
INNER JOIN b ON b.id_a = a.id
como resultado
nome  | carro
joao  | gol
jose  | palio

Como resposta a sua segunda pergunta em

Qual é a vantagem de usar o join?
temos a clareza de código e facilitar o motor do MySQL na resolução da instrução SQL como os principais benefícios do uso do JOIN.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...