Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Join e alias

Olá, boa tarde! Quando o professor usou o seguinte comando:

"SELECT DISTINCT BAIRRO, NOME, 'Cliente' as TIPO from tabela_de_clientes UNION SELECT DISTINCT BAIRRO, NOME, 'VENDEDOR' as TIPO FROM tabela_de_vendedores; "

Tem necessidade do "DISTINCT"? Pois se o "UNION" já faz automaticamente a distinção dos itens repetidos ou perdi algo?

Minha outra dúvida é referente ao JOIN. Sempre quando for utilizar algum tipo de JOIN, posso usar desta forma, sem a necessidade de alias?

"select tabela_de_vendedores.BAIRRO, tabela_de_vendedores.NOME, DE_FERIAS, tabela_de_clientes.BAIRRO, tabela_de_clientes.NOME from tabela_de_vendedores inner join tabela_de_clientes on tabela_de_vendedores.BAIRRO = tabela_de_clientes.BAIRRO;"

Desde já, agradeço a atenção.

1 resposta
solução!

Olá Wendel, tudo bem? Nesse cenário sim, precisamos utilizar o DISTINCT, porque o UNION faz a distinção de linhas repetidas só que após realizar a união, nesse caso a junção poderia vir com valores de campo BAIRRO repetido. Então o professor realizar o DISTINCT sobre o campo bairro nas duas consultas individualmente, assim só vai vir um BAIRRO com o mesmo nome em cada consulta, só depois ele utiliza o UNION para juntar as consultas, e o UNION vai juntar as duas consultas e depois fazer o DISTINCT para trazer somente as linhas únicas.

Sobre sua segunda dúvida, a questão de não usar alias, sim você pode não usar nenhum alias, dá certo utilizando diretamente o nome das tabelas, a questão de usar alias é que geralmente os bancos de dados tem muitas tabelas e muitas vezes os nomes das tabelas são grandes, como nesse seu código:

select tabela_de_vendedores.BAIRRO, tabela_de_vendedores.NOME, DE_FERIAS, tabela_de_clientes.BAIRRO, tabela_de_clientes.NOME from tabela_de_vendedores inner join tabela_de_clientes on tabela_de_vendedores.BAIRRO = tabela_de_clientes.BAIRRO;

Ficar utilizando o nome completo da tabela é trabalhoso e demorado, principalmente se não tivermos utilizando um Client que nós ajude com autocomplete.

Espero ter ajudado!