Associação de subconsulta SQL com consulta externa

Associacao De Subconsulta Sql Com Consulta Externa



Quando se trata de trabalhar com bancos de dados relacionais, você precisa dominar como manipular e combinar as consultas para realizar as tarefas que deseja. É por isso que cada mecanismo de banco de dados relacional implementa seu sabor da linguagem SQL tentando fornecer recursos excepcionais, eficiência e facilidade de uso para seus usuários.

Um dos recursos mais poderosos do SQL são as subconsultas. Subconsultas são um conjunto de consultas aninhadas dentro de uma consulta maior e mais complexa. As subconsultas permitem que você recupere os dados ou execute operações mais complexas como uma única entidade.







Podemos usar as subconsultas para realizar filtragem de dados, classificação, agregação em várias tabelas e muito mais.



No entanto, outro recurso oculto nas subconsultas SQL é conhecido como junções de subconsultas. Elas são semelhantes às subconsultas; em vez disso, são junções que permitem usar as subconsultas dentro de uma consulta externa para unir as tabelas.



Se sua cabeça está girando, não se preocupe porque junções de subconsultas podem ser difíceis de dominar, especialmente no começo. No entanto, este tutorial tenta dividir as junções de subconsulta em etapas elementares sem deixar muito ao acaso.





Lembre-se de que assumimos que você não é novo em SQL, SQL Joins, SQL Subqueries ou outros. No entanto, se estiver, verifique nossos tutoriais sobre os tópicos para descobrir mais.

Domine as junções externas do SQL

Se você quiser entender como trabalhar com junções de subconsulta, aprender a trabalhar com junções externas é um fator importante.



Se você não estiver familiarizado, uma junção externa SQL permite buscar todas as linhas de uma tabela e as linhas correspondentes da segunda tabela. É um pouco mais complexo do que isso, incluindo a junção externa esquerda, junção externa direita, junção externa completa, etc.

Em uma junção externa esquerda SQL, a consulta retorna todas as linhas da tabela esquerda e as linhas correspondentes da tabela direita. A consulta inclui os valores NULL nas colunas resultantes se não houver linhas correspondentes na tabela correta.

No caso de uma junção externa direita, a consulta retorna todas as linhas da tabela da direita, mas apenas as linhas correspondentes da tabela da esquerda. Da mesma forma, a consulta inclui os valores NULL se não houver linhas correspondentes na tabela à esquerda.

Por fim, temos a junção externa completa. Essa junção retorna todas as linhas das tabelas direita e esquerda e os valores NULL para quaisquer registros não correspondentes.

Junções de subconsulta SQL

Agora que entendemos sobre as subconsultas SQL, vamos falar sobre junções de subconsultas. Junções de subconsultas nos permitem usar as subconsultas dentro de uma consulta externa para unir as tabelas.

Se você está perguntando, é isso? Sim, isso é tudo o que as junções de subconsulta fazem.

Para melhor demonstrar isso, pegue o seguinte exemplo de sintaxe que é demonstrado a seguir:

SELECIONE *
DA tabela1
ESQUERDA OUTER JOIN (
SELECIONE coluna1, coluna2
DA tabela2
) subconsulta AS
ON tabela1.coluna3 = subconsulta.coluna1;


Na sintaxe anterior, selecionamos todas as colunas da tabela um usando uma junção externa esquerda para juntá-la a uma subconsulta. A função da subconsulta é buscar as colunas definidas da Tabela 2. Em seguida, a unimos à Tabela 1 na condição da coluna 2 da Tabela 1 e da coluna 1 da subconsulta.

Exemplo Prático:

Teoricamente, parece menos intuitivo, mas vamos pegar um cenário do mundo real usando o banco de dados Sakila.

Suponha que queremos recuperar a lista de todos os filmes do banco de dados e seus respectivos idiomas. Os idiomas dos filmes são armazenados na tabela de idiomas e os nomes dos filmes são armazenados na tabela de filmes.

No entanto, a tabela de filmes possui uma chave estrangeira chamada coluna “language_id” da tabela de idiomas. Portanto, podemos usar uma junção de subconsulta com uma junção externa esquerda para unir as duas tabelas, conforme demonstrado na consulta a seguir:

SELECT f.title, l.name AS idioma
DO filme f
ESQUERDA OUTER JOIN (
SELECT language_id, nome
idioma DE
) como eu
ON f.idioma_id = l.idioma_id;


No exemplo de consulta anterior, selecionamos a coluna title da tabela film e a coluna name da tabela language.

Em seguida, usamos uma subconsulta para selecionar o language_id e a coluna de nome da tabela de idiomas. A próxima etapa é juntá-lo à tabela de filmes com a condição de que o language_id da tabela de filmes seja igual ao language_id da tabela de idiomas.

Para garantir que todos os filmes sejam incluídos no resultado, precisamos usar a junção externa esquerda que consiste em todos os resultados da tabela da esquerda que, neste caso, é a tabela de filmes.

Um exemplo de saída é o seguinte:


Também podemos fazer o mesmo com uma junção externa direita. A sintaxe é a seguinte:

SELECIONE *
DA tabela1
JUNÇÃO EXTERNA DIREITA (
SELECIONE coluna1, coluna2
DA tabela2
) subconsulta AS
ON tabela1.coluna3 = subconsulta.coluna1;


Isso se comporta de maneira semelhante, mas inclui todos os registros na tabela correta, mesmo que não haja registros correspondentes.

Coisas úteis para saber

É bom entender que, embora as uniões de subconsultas sejam incrivelmente úteis e possam otimizar seu fluxo de trabalho, use-as com cautela.

Por exemplo, evite usar junções de subconsulta com um grande conjunto de dados. Isso ocorre porque eles podem retornar os registros extensos que podem afetar o desempenho do banco de dados.

Considere usar as ferramentas de análise de consulta antes de executar qualquer junção de subconsulta.

Conclusão

Este tutorial explorou os fundamentos do trabalho com subconsultas e junções de subconsultas no SQL. Ao final deste tutorial, você agora entende como trabalhar com junções de subconsultas, por que pode precisar usá-las e um exemplo prático de como elas podem ajudá-lo em seu fluxo de trabalho.