·
Engenharia de Computação ·
Introdução à Lógica e Programação
Send your question to AI and receive an answer instantly
Recommended for you
18
Operações Básicas e Operadores Lógicos em DQL
Introdução à Lógica e Programação
FIT
70
Introdução à Linguagem SQL: Estruturas e Práticas
Introdução à Lógica e Programação
FIT
15
Operações Básicas e Operadores Lógicos em SQL
Introdução à Lógica e Programação
FIT
1
Lista de vídeos recomendados
Introdução à Lógica e Programação
FIT
1
Links para Vídeos do YouTube
Introdução à Lógica e Programação
FIT
1
Lista de vídeos do YouTube
Introdução à Lógica e Programação
FIT
Preview text
Junções Joins INNER JOIN LEFT outer JOIN RIGHT outer JOIN LEFT Exclusivo ou LEFT WHERE RIGHT Exclusivo ou RIGHT WHERE FULL outer JOIN FULL Exclusivo ou FULL WHERE DQL Tipos de Join Observando a mesma modelagem mostrada anteriormente para gerar uma lista com TODOS os produtos mesmo que não haja relação entre as duas tabelas podemos substituir a cláusula JOIN por LEFT JOIN Left Join Ou seja para gerar uma consulta que apresente OBRIGATORIAMENTE todos os produtos mesmo aqueles em que não encontramos relação na tabela de fornecedores poderíamos utilizar a cláusula LEFT JOIN que faz com que todos os registros do objeto tabela do lado ESQUERDO da consulta sejam mostrados INNER JOIN LEFT outer JOIN RIGHT outer JOIN LEFT Exclusivo ou LEFT WHERE RIGHT Exclusivo ou RIGHT WHERE FULL outer JOIN FULL Exclusivo ou FULL WHERE DQL Tipos de Join SELECT PCodigo PNome AS Nome do Produto PEstoque FNome AS Nome do Fornecedor FContato FTelefone FROM Produto AS P LEFT JOIN Fornecedor AS F ON PidFornecedor FidFornecedor Left Join Podemos fazer o inverso ou seja gerar uma lista com OBRIGATORIAMENTE todos os fornecedores mesmo aqueles em que não encontramos relação na tabela de produtos bastando alterar para cláusula RIGHT JOIN que faz com que todos os registros do lado DIREITO da consulta sejam mostrados O controle do modo que queremos o JOIN é realizado apenas pelo posicionamento da tabela ao lado direito ou esquerdo do SELECT ou simplesmente trocando a cláusula de RIGHT JOIN para LEFT JOIN Right Join INNER JOIN LEFT outer JOIN RIGHT outer JOIN LEFT Exclusivo ou LEFT WHERE RIGHT Exclusivo ou RIGHT WHERE FULL outer JOIN FULL Exclusivo ou FULL WHERE DQL Tipos de Join Por exemplo as tabelas TB1 e TB2 relacionadas pelas colunas C1 e C2 Se quisermos gerar uma lista com TODOS os registros da tabela TB1 os SELECTs abaixo geram essa lista SELECT FROM TB1 LEFT JOIN TB2 ON TB1C1 TB2C2 SELECT FROM TB2 RIGHT JOIN TB1 ON TB2C2 TB1C1 OU Right Join SELECT PCodigo PNome AS Nome do Produto PEstoque FNome AS Nome do Fornecedor FContato FTelefone FROM Produto AS P RIGHT JOIN Fornecedor AS F ON PidFornecedor FidFornecedor Right Join Existe um outro tipo de JOIN que podemos utilizar quando queremos retornar todas as linhas das tabelas envolvidas retornando todas as relações como o JOIN e todos os registros não relacionados LEFT JOIN e RIGHT JOIN numa mesma extração Tratase da cláusula FULL JOIN que em geral não é utilizada sistemicamente mas sim para encontrarmos possíveis problemas nos relacionamentos SELECT tabela 1coluna 1 tabela 1coluna n tabela 2coluna 1 tabela 2coluna n FROM tabela 1 FULL JOIN tabela 2 ON tabela 1coluna chave tabela 2coluna chave Full Join INNER JOIN LEFT outer JOIN RIGHT outer JOIN LEFT Exclusivo ou LEFT WHERE RIGHT Exclusivo ou RIGHT WHERE FULL outer JOIN FULL Exclusivo ou FULL WHERE DQL Tipos de Join Diferentemente do LEFT JOIN ou RIGHT JOIN em que o posicionamento das tabelas ou escolha da cláusula gera efeito na listagem na cláusula FULL JOIN a ordem em que as tabelas estiverem não fará diferença ou seja o resultado na geração da lista será o mesmo Full Join SELECT PCodigo PNome AS Nome do Produto PEstoque FNome AS Nome do Fornecedor FContato FTelefone FROM Produto AS P FULL JOIN Fornecedor AS F ON PidFornecedor FidFornecedor Full Join A ordem em que colocarmos as tabelas ou as cláusulas JOIN LEFT JOIN ou RIGHT JOIN ocasiona diferenças na geração dos resultados e conforme já visto devemos estar atentos a isso Mas se tratarmos a consulta envolvendo três ou mais tabelas como conjunto de resultados não teremos maiores problemas na construção das queries Join com mais de duas tabelas SELECT tabela 1coluna 1 tabela 1coluna n tabela 2coluna 1 tabela 2coluna n tabela 2coluna 1 tabela 2coluna n FROM tabela 1 JOIN tabela 3 ON tabela 3coluna chave tabela 1coluna chave JOIN tabela 2 ON tabela 2coluna chave tabela 3coluna chave Mantenha em mente cada junção entre uma tabela e outra como um conjunto de resultados e faça as junções através deles No script abaixo perceba que independente das junções que tivermos se tratarmos cada duas tabelas como um conjunto e a próxima junção como um novo conjunto o entendimento será mais fácil Quando aplicamos JOIN entre as tabelas a ordem em que estão não irá afetar os resultados assim podemos inverter as ordens das tabelas que o efeito será o mesmo Join com mais de duas tabelas Se alternarmos os JOINS entre JOIN LEFT JOIN ou RIGHT JOIN devemos ter cuidado pois o resultado final será afetado Veja o exemplo abaixo e perceba como há diferença entre as junções SELECT tabela 1coluna 1 tabela 1coluna n tabela 2coluna 1 tabela 2coluna n tabela 2coluna 1 tabela 2coluna n FROM tabela 1 LEFT JOIN tabela 2 ON tabela 1coluna chave tabela 2coluna chave JOIN tabela 3 ON tabela 1coluna chave tabela 3coluna chave 1º Conjunto de Resultados 2º Conjunto de Resultados Join com mais de duas tabelas É totalmente diferente se invertermos os JOINS conforme mostrado abaixo SELECT tabela 1coluna 1 tabela 1coluna n tabela 2coluna 1 tabela 2coluna n tabela 2coluna 1 tabela 2coluna n FROM tabela 1 JOIN tabela 2 ON tabela 1coluna chave tabela 2coluna chave LEFT JOIN tabela 3 ON tabela 1coluna chave tabela 3coluna chave 1º Conjunto de Resultados 2º Conjunto de Resultados Join com mais de duas tabelas A mesma diferença será estendida se trocarmos pela cláusula RIGHT JOIN ou seja quando temos apenas a cláusula JOIN não precisamos nos preocupar com a ordem em que as tabelas são posicionadas Mas se em nossas junções tivermos qualquer tipo de LEFT JOIN ou RIGHT JOIN temos que ter atenção no posicionamento e ordem em que as tabelas estarão assim como cada cláusula de junção Join com mais de duas tabelas Leitura do arquivo PDF disponibilizado na plataforma Atividades extraclasse
Send your question to AI and receive an answer instantly
Recommended for you
18
Operações Básicas e Operadores Lógicos em DQL
Introdução à Lógica e Programação
FIT
70
Introdução à Linguagem SQL: Estruturas e Práticas
Introdução à Lógica e Programação
FIT
15
Operações Básicas e Operadores Lógicos em SQL
Introdução à Lógica e Programação
FIT
1
Lista de vídeos recomendados
Introdução à Lógica e Programação
FIT
1
Links para Vídeos do YouTube
Introdução à Lógica e Programação
FIT
1
Lista de vídeos do YouTube
Introdução à Lógica e Programação
FIT
Preview text
Junções Joins INNER JOIN LEFT outer JOIN RIGHT outer JOIN LEFT Exclusivo ou LEFT WHERE RIGHT Exclusivo ou RIGHT WHERE FULL outer JOIN FULL Exclusivo ou FULL WHERE DQL Tipos de Join Observando a mesma modelagem mostrada anteriormente para gerar uma lista com TODOS os produtos mesmo que não haja relação entre as duas tabelas podemos substituir a cláusula JOIN por LEFT JOIN Left Join Ou seja para gerar uma consulta que apresente OBRIGATORIAMENTE todos os produtos mesmo aqueles em que não encontramos relação na tabela de fornecedores poderíamos utilizar a cláusula LEFT JOIN que faz com que todos os registros do objeto tabela do lado ESQUERDO da consulta sejam mostrados INNER JOIN LEFT outer JOIN RIGHT outer JOIN LEFT Exclusivo ou LEFT WHERE RIGHT Exclusivo ou RIGHT WHERE FULL outer JOIN FULL Exclusivo ou FULL WHERE DQL Tipos de Join SELECT PCodigo PNome AS Nome do Produto PEstoque FNome AS Nome do Fornecedor FContato FTelefone FROM Produto AS P LEFT JOIN Fornecedor AS F ON PidFornecedor FidFornecedor Left Join Podemos fazer o inverso ou seja gerar uma lista com OBRIGATORIAMENTE todos os fornecedores mesmo aqueles em que não encontramos relação na tabela de produtos bastando alterar para cláusula RIGHT JOIN que faz com que todos os registros do lado DIREITO da consulta sejam mostrados O controle do modo que queremos o JOIN é realizado apenas pelo posicionamento da tabela ao lado direito ou esquerdo do SELECT ou simplesmente trocando a cláusula de RIGHT JOIN para LEFT JOIN Right Join INNER JOIN LEFT outer JOIN RIGHT outer JOIN LEFT Exclusivo ou LEFT WHERE RIGHT Exclusivo ou RIGHT WHERE FULL outer JOIN FULL Exclusivo ou FULL WHERE DQL Tipos de Join Por exemplo as tabelas TB1 e TB2 relacionadas pelas colunas C1 e C2 Se quisermos gerar uma lista com TODOS os registros da tabela TB1 os SELECTs abaixo geram essa lista SELECT FROM TB1 LEFT JOIN TB2 ON TB1C1 TB2C2 SELECT FROM TB2 RIGHT JOIN TB1 ON TB2C2 TB1C1 OU Right Join SELECT PCodigo PNome AS Nome do Produto PEstoque FNome AS Nome do Fornecedor FContato FTelefone FROM Produto AS P RIGHT JOIN Fornecedor AS F ON PidFornecedor FidFornecedor Right Join Existe um outro tipo de JOIN que podemos utilizar quando queremos retornar todas as linhas das tabelas envolvidas retornando todas as relações como o JOIN e todos os registros não relacionados LEFT JOIN e RIGHT JOIN numa mesma extração Tratase da cláusula FULL JOIN que em geral não é utilizada sistemicamente mas sim para encontrarmos possíveis problemas nos relacionamentos SELECT tabela 1coluna 1 tabela 1coluna n tabela 2coluna 1 tabela 2coluna n FROM tabela 1 FULL JOIN tabela 2 ON tabela 1coluna chave tabela 2coluna chave Full Join INNER JOIN LEFT outer JOIN RIGHT outer JOIN LEFT Exclusivo ou LEFT WHERE RIGHT Exclusivo ou RIGHT WHERE FULL outer JOIN FULL Exclusivo ou FULL WHERE DQL Tipos de Join Diferentemente do LEFT JOIN ou RIGHT JOIN em que o posicionamento das tabelas ou escolha da cláusula gera efeito na listagem na cláusula FULL JOIN a ordem em que as tabelas estiverem não fará diferença ou seja o resultado na geração da lista será o mesmo Full Join SELECT PCodigo PNome AS Nome do Produto PEstoque FNome AS Nome do Fornecedor FContato FTelefone FROM Produto AS P FULL JOIN Fornecedor AS F ON PidFornecedor FidFornecedor Full Join A ordem em que colocarmos as tabelas ou as cláusulas JOIN LEFT JOIN ou RIGHT JOIN ocasiona diferenças na geração dos resultados e conforme já visto devemos estar atentos a isso Mas se tratarmos a consulta envolvendo três ou mais tabelas como conjunto de resultados não teremos maiores problemas na construção das queries Join com mais de duas tabelas SELECT tabela 1coluna 1 tabela 1coluna n tabela 2coluna 1 tabela 2coluna n tabela 2coluna 1 tabela 2coluna n FROM tabela 1 JOIN tabela 3 ON tabela 3coluna chave tabela 1coluna chave JOIN tabela 2 ON tabela 2coluna chave tabela 3coluna chave Mantenha em mente cada junção entre uma tabela e outra como um conjunto de resultados e faça as junções através deles No script abaixo perceba que independente das junções que tivermos se tratarmos cada duas tabelas como um conjunto e a próxima junção como um novo conjunto o entendimento será mais fácil Quando aplicamos JOIN entre as tabelas a ordem em que estão não irá afetar os resultados assim podemos inverter as ordens das tabelas que o efeito será o mesmo Join com mais de duas tabelas Se alternarmos os JOINS entre JOIN LEFT JOIN ou RIGHT JOIN devemos ter cuidado pois o resultado final será afetado Veja o exemplo abaixo e perceba como há diferença entre as junções SELECT tabela 1coluna 1 tabela 1coluna n tabela 2coluna 1 tabela 2coluna n tabela 2coluna 1 tabela 2coluna n FROM tabela 1 LEFT JOIN tabela 2 ON tabela 1coluna chave tabela 2coluna chave JOIN tabela 3 ON tabela 1coluna chave tabela 3coluna chave 1º Conjunto de Resultados 2º Conjunto de Resultados Join com mais de duas tabelas É totalmente diferente se invertermos os JOINS conforme mostrado abaixo SELECT tabela 1coluna 1 tabela 1coluna n tabela 2coluna 1 tabela 2coluna n tabela 2coluna 1 tabela 2coluna n FROM tabela 1 JOIN tabela 2 ON tabela 1coluna chave tabela 2coluna chave LEFT JOIN tabela 3 ON tabela 1coluna chave tabela 3coluna chave 1º Conjunto de Resultados 2º Conjunto de Resultados Join com mais de duas tabelas A mesma diferença será estendida se trocarmos pela cláusula RIGHT JOIN ou seja quando temos apenas a cláusula JOIN não precisamos nos preocupar com a ordem em que as tabelas são posicionadas Mas se em nossas junções tivermos qualquer tipo de LEFT JOIN ou RIGHT JOIN temos que ter atenção no posicionamento e ordem em que as tabelas estarão assim como cada cláusula de junção Join com mais de duas tabelas Leitura do arquivo PDF disponibilizado na plataforma Atividades extraclasse