4
respostas

Qual tabela?!

Na query abaixo:

SELECT * FROM tabela_de_clientes WHERE BAIRRO IN ('TIJUCA','JARDINS','COPACABANA','SANTO AMARO');

Como eu sei que o 'BAIRRO' que está sendo condicionado é o 'BAIRRO' pertencente à tabela 'TABELA_DE_VENDEDORES'?

(Conforme afirmado no Curso 02 / Aula 04 / Exerecício 09: sub consultas)

4 respostas

É pra esse campo "BAIRRO" se referir a tabela listada no FROM, se o nome dele é único entre as tabelas listadas ou há apenas uma tabela na clausula FROM. Se existirem mais tabelas no FROM e que tenham um campo com o mesmo nome, é necessário utilizar "AS" para nomear a tabela e assim se referir ao campo da tabela adequada.

Sim, se fosse o caso de existir apenas um campo faria sentido, acontece é que no exercício existem dois campos com o mesmo nome (BAIRRO), e na query não está explícito (pelo menos para mim) a qual tabela ele se refere. No exercício, o retorno do resultado é o mesmo porque de fato existem os mesmos valores em ambos os campos, cada um em sua tabela.

Em tempo: Quando ele lista os bairros na query, estou entendendo que seja o campo BAIRRO da tabela CLIENTES, mas na vídeo aula, me fez entender que ele busca os valores do campo BAIRRO na tabela VENDEDORES.

Olá Fernando!

No vídeo o que o professor faz é usar uma subconsulta dentro do WHERE, assim com o query:

SELECT * FROM tabela_de_clientes WHERE BAIRRO 
IN (SELECT DISTINCT BAIRRO FROM tabela_de_vendedores);

Ele busca na tabela de clientes, todos os registros (com todos os campos do mesmo), onde o BAIRRO for igual a uma lista de bairros que vem da sub consulta:

SELECT DISTINCT BAIRRO FROM tabela_de_vendedores

Assim, todos os clientes que forem retornados, terão o bairro igual a algum dos bairros dessa sub consulta, que é da tabela de TABELA_DE_VENDEDORES.

Agora, sua dúvida era essa? Ou é sobre uma junção de consultas utilizando um JOIN cujo duas tabelas tenham o mesmo campo (BAIRRO) ? Se sim, ai você tem que usar um alias como sugeriu o Francisco Daniel.

Espero ter ajudado!