MySQL – LEFT e RIGHT JOIN – Consultar dados em duas ou mais tabelas

MySQL – LEFT e RIGHT JOIN – Consultar dados em duas ou mais tabelas

Em continuação ao nosso estudo sobre JOINS em MySQL, vamos analisar nesta lição o uso do OUTER JOINS. Há três tipos principais:

  • LEFT JOIN: Retorna todas as linhas da tabela à esquerda, mesmo se não houver nenhuma correspondência na tabela à direita.
  • RIGHT JOIN: Retorna todas as linhas da tabela à direita, mesmo se não houver nenhuma correspondência na tabela à esquerda.
  • FULL JOIN: Retorna linhas quando houver uma correspondência em qualquer uma das tabelas. É uma combinação de LEFT e RIGHT JOINS.

Vamos ver a sintaxe e alguns exemplos de cada um deles. Falaremos também sobre o CROSS JOIN nesta lição.

LEFT JOIN

Sintaxe:

SELECT colunas
FROM tabela_esq
LEFT (OUTER) JOIN tabela_dir
ON tabela_esq.coluna=tabela_dir.coluna;

Exemplo:

SELECT * FROM tbl_autores
LEFT JOIN tbl_Livro
ON tbl_Livro.ID_Autor = tbl_autores.ID_Autor;

LEFT JOIN excluindo correspondências:

Sintaxe:

SELECT coluna
FROM tabela_esq
LEFT (OUTER) JOIN tabela_dir
ON tabela_esq.coluna=tabela_dir.coluna
WHERE tabela_dir.coluna IS NULL;

Exemplo:

SELECT * FROM tbl_autores
LEFT JOIN tbl_Livro
ON tbl_Livro.ID_Autor = tbl_autores.ID_Autor
WHERE tbl_Livro.ID_Autor IS NULL;

LEFT JOIN MySQL

RIGHT JOIN

Sintaxe:

SELECT colunas
FROM tabela_esq
RIGHT (OUTER) JOIN tabela_dir
ON tabela_esq.coluna=tabela_dir.coluna;

Exemplo:

SELECT * FROM tbl_Livro AS Li
RIGHT JOIN tbl_editoras AS Ed
ON Li.ID_editora = Ed.ID_editora;

RIGHT JOIN MySQL

RIGHT JOIN excluindo correspondências:

Sintaxe:

SELECT coluna
FROM tabela_esq
RIGHT (OUTER) JOIN tabela_dir
ON tabela_esq.coluna=tabela_dir.coluna
WHERE tabela_esq.coluna IS NULL;

Exemplo:

SELECT * FROM tbl_Livro
RIGHT JOIN tbl_editoras
ON tbl_Livro.ID_editora = tbl_editoras.ID_editora
WHERE tbl_Livro.ID_editora IS NULL;

FULL JOIN

Sintaxe:

SELECT colunas
FROM tabela1
FULL (OUTER) JOIN tabela2
ON tabela1.coluna=tabela2.coluna;

FULL JOIN excluindo correspondências:

Sintaxe:

SELECT colunas
FROM tabela1
FULL (OUTER) JOIN tabela2
ON tabela1.coluna=tabela2.coluna
WHERE tabela1.coluna IS NULL
OR tabela2.coluna IS NULL;

CROSS JOIN

Um CROSS JOIN retorna um produto cartesiano entre as tabelas, mostrando todas as combinações possíveis entre os registros.

Sintaxe:

SELECT colunas FROM tabela1
CROSS JOIN tabela2;

A figura abaixo representa o produto cartesiano de um Cross Join entre as tabelas de livros e autores:

Curso de MySQL - Cross Join

Vejamos um exemplo de CROSS JOIN – Retornar Nome e Preço dos livros, cruzando os dados com a tabela de autores:

SELECT Nome_Livro, Preco_Livro
FROM tbl_livro
CROSS JOIN tbl_autores;

SQL CROSS JOIN MySQL

Assista a um vídeo para tirar suas dúvidas e ver os exemplos em prática:

Sobre Fábio dos Reis (1325 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

4 Comentários em MySQL – LEFT e RIGHT JOIN – Consultar dados em duas ou mais tabelas

  1. Porfirio Horácio Soares // 05/04/2015 em 13:48 // Responder

    Onde fica situado o vosso centro.

  2. Olá gostaria de fazer um contato telefônico com a empresa. Em qual número posso ligar.

1 Trackbacks & Pingbacks

  1. MySQL - INNER JOIN - Consultar dados em duas ou mais Tabelas

Escreva um comentário

Seu e-mail não será divulgado


*