3
respostas

Uso do where

Na solução a query consta sem o whery.

Ao meu entender seria necessário pois queremos aumentar em 30% o volume de compra APENAS dos clientes que tem a.bairro = b.bairro, não é isso ?

UPDATE CLIENTES A INNER JOIN VENDEDORES B
ON A.BAIRRO = B.BAIRRO
SET A.VOLUME_COMPRA = A.VOLUME_COMPRA * 1.30

essa foi a query proposta como solução, sem constar o where.

update clientes a
INNER JOIN VENDEDORES B
ON A.BAIRRO = B.BAIRRO
set volume_compra =  volume_compra * 1.30
where a.bairro = b.bairro

essa foi a minha.

me enganei na solução proposta?

"odemos observar que os vendedores possuem bairro associados a eles. Vamos aumentar em 30% o volume de compra dos clientes que possuem, em seus endereços bairros onde os vendedores possuam escritórios."

esse era o problema proposto.

3 respostas

Olá Murilo, tudo bem?

Neste caso realmente não é necessário o WHERE, pois como na query estamos utilizando o JOIN e só serão retornados clientes que tenham o mesmo bairro que os vendedores, o WHERE não é necessário. Mas, caso o JOIN não fosse utilizado para realizar a consulta, seria necessário utilizar o WHERE para realizar o filtro e atualizar apenas os clientes que tenham o mesmo bairro que os vendedores.

  • Select utilizando a mesma query do update com o JOIN

Ao executar a query, podemos ver que mesmo sem um WHERE, apenas clientes que tenham o mesmo bairro que os vendedores serão retornados

SELECT A.nome as Nome_Clientes, A.bairro as Bairro_Clientes, B.bairro as Bairro_Vendedores 
FROM tabela_de_clientes A INNER JOIN tabela_de_vendedores B
ON A.BAIRRO = B.BAIRRO

Realizando um select na tabea de clientes e na tabela de vendedores utilzando JOIN

  • Comando update utilizando o JOIN

Então realizamos uma mudança nessa query para atualizar a tabela de clientes, como o JOIN já tem o seu próprio filtro (A.BAIRRO = B.BAIRRO), não precisamos informar o WHERE

UPDATE tabela_de_clientes A INNER JOIN tabela_de_clientes B
ON A.BAIRRO = B.BAIRRO
SET A.VOLUME_COMPRA = A.VOLUME_COMPRA * 1.30

Ao relizar um select na tabela de clientes, podemos ver que apenas clientes que tenham o mesmo bairro que os vendedores foram atualizados:

realizando um select na tabela de clientes para verificar a atualização dos clientes

Foi muito legal você ter compartilhado a sua resposta da atividade aqui com a gente :).

Continue assim e bons estudos!

Perfeito Danielle, tem razão!

Obrigado pela correção!

Mais uma dúvida rs, poderia precisar mesmo com inner join caso as chaves de relação não fossem o bairro certo ?

Depende qual será o filtro aplicado para atualização Murilo, por exemplo, se quero atualizar apenas os vendedores que morem no Rio de Janeiro, então neste caso precisaria apenas utilizar o WHERE para filtrar os vendedores, sem precisar realizar a busca em outra tabela. Mas, caso queira atualizar uma tabela, a partir de uma outra, como neste exemplo da aula, caso eu esteja utilizando o JOIN e o friltro seja o mesmo que você vai utilizar para atualizar, não precisa do WHERE, caso contrário Murilo, sim, você precisa do WHERE.

Como por exemplo, além do Bairro, quero clientes que tenham um volume de compra maior que 2000, neste caso eu precisaria utilizar o WHERE, pois apenas o filtro do JOIN, não traria o resultado desejado.

Espero ter esclarecido a sua dúvida e bons estudos!