Minicursos - MySQL

Consultas Aninhadas


As consultas aninhadas consistem em se realizar uma consulta a partir do resultado de outra consulta. É um SELECT existindo dentro de outro. Isso simplifica demais a obtenção de algumas informações. Imaginem que nossa empresa fictícia de revenda de veículos quisesse consultar todos os dados do veículo mais caro cadastrado no sistema. Veja como isso pode ser conseguido facilmente com uma consulta aninhada:

SELECT * FROM carro, preco WHERE carro.modelo = preco.modelo AND valor = (SELECT MAX(valor) FROM preco);

Consultas Aninhadas MySQL

Aí está o retorno correto da nossa consulta. A formatação não é das melhores devido à limitação de caracteres horizontais sendo exibidos no prompt do SGBD, mas os dados estão todos aí. Vamos analisar este comando. O que estamos pedindo ao SGBD é:

Selecione todos os dados das tabelas "carro" e "preco", onde a coluna "modelo" da tabela "carro" seja igual à coluna "modelo" da tabela "preco" e o valor encontrado seja igual ao valor encontrado na consulta (SELECT MAX(valor) FROM preco). Esta segunda consulta, como é fácil perceber, localiza o maior preço cadastrado na tabela "preco".

Poderíamos ainda utilizar o operador IN para uma consulta aninhada, da seguinte forma:

SELECT * FROM carro, preco WHERE carro.modelo = preco.modelo AND carro.montadora IN (“FIAT”, “FORD”);

Consultas Aninhadas MySQL

Agora foram retornados somente os resultados dos carros cujas montadoras eram FIAT ou FORD.

Sempre que você necessitar extrair dados de uma consulta, pense em utilizar a consulta aninhada. Com isso você ganha tempo e executa dois SELECTs em um só!



Você gostará destes vídeos: