Cursos / Informática para Internet / Banco de Dados / Aula
No exemplo anterior, que lista todos os nomes dos produtos e quantidade de itens vendidos, vimos que a consulta interna necessita da informação sobre o atributo prod_codigo da tabela produtos para ser executada, que está disponível para acesso a partir da consulta externa. Sendo assim, a subconsulta não pode ser executada como uma consulta independente. A consulta externa tem que ser executada antes para sabermos qual é o valor de prod_codigo. Quando isso ocorre, dizemos que a subconsulta é correlacionada.
Subconsulta correlacionada é quando a consulta interna depende dos valores retornados pela consulta externa para ser processada. Na subconsulta não correlacionada, a consulta interna funciona sozinha, não necessitando de nenhuma informação da consulta externa, podendo ser executada como uma consulta independente.
Para entendermos melhor a diferença entre subconsulta correlacionada e subconsulta não correlacionada, vamos analisar os seguintes exemplos. Examine com cuidado e não deixe que nenhuma dúvida fique sem ser esclarecida.
Subconsulta correlacionada
Pesquisar o nome e o total de produtos comprados por cada cliente.
Nesse exemplo, a subconsulta necessita, para ser executada, da informação de qual é o código do cliente, que será informada pela consulta externa a cada linha que a consulta externa processe. O resultado dessa pesquisa é ilustrado na Figura 8.
Subconsulta não correlacionada
Pesquisar o nome do cliente com o atributo cli_codigo=1 e os produtos por ele comprados.
Nesse exemplo, tem-se uma junção de conexões e subconsulta não correlacionada em uma única consulta. A subconsulta não depende de nenhuma informação da consulta externa para ser executada, trabalhando apenas com as informações provenientes da tabela compras, sendo, portanto, uma subconsulta não correlacionada. A consulta externa realiza uma pesquisa empregando conexão cartesiana. O resultado dessa pesquisa é ilustrado na Figura 8. Observe que as linhas listadas correspondem ao produto cartesiano entre as tabelas clientes e produtos que possuem o código do produto pertencente ao conjunto retornado pela subconsulta.
Versão 5.3 - Todos os Direitos reservados