Com relação aos comandos SQL apresentados acima, julgue o it...

Próximas questões
Com base no mesmo assunto
Q959627 Banco de Dados

SELECT Cadastro.NomeCliente, Ordens.NumOrdem

FROM Cadastro

LEFT JOIN Ordens

ON Cadastro.NumCliente=Ordens.NumCliente

ORDER BY NomeCliente;

Com relação aos comandos SQL apresentados acima, julgue o item a seguir.

Há um erro de programação SQL na quarta linha, pois o registro NumCliente foi declarado em ambas as tabelas, Cadastro e Ordens.

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: E - errado

A questão aborda o conceito de joins em SQL, mais especificamente o LEFT JOIN. O LEFT JOIN é utilizado para retornar todos os registros da tabela à esquerda (Cadastro), e os registros correspondentes da tabela à direita (Ordens). Quando não há correspondência, os resultados da tabela à direita terão valores NULL nas colunas.

É importante destacar que, no SQL, é completamente normal e até esperado que colunas de duas tabelas diferentes tenham o mesmo nome quando elas estão relacionadas. Isso geralmente acontece com chaves primárias (primary keys) em uma tabela que se tornam chaves estrangeiras (foreign keys) em outra tabela. No caso da questão, presumimos que NumCliente é a chave que relaciona as duas tabelas, sendo muito provavelmente a chave primária em Cadastro e chave estrangeira em Ordens.

Portanto, não há erro algum na quarta linha do comando SQL apresentado. A instrução ON Cadastro.NumCliente = Ordens.NumCliente está correta e é a forma padrão de se especificar a condição de junção entre as duas tabelas, baseando-se na coluna NumCliente que é comum a ambas.

O comando SQL fornecido irá listar todos os clientes, independentemente de eles terem feito ordens ou não, ordenando os resultados pelo nome do cliente. Se um cliente não tiver nenhuma ordem, a coluna Ordens.NumOrdem aparecerá como NULL para esse cliente na lista de resultados.

Portanto, a afirmativa que sugere um erro de programação por ter o registro NumCliente declarado em ambas as tabelas é incorreta, pois essa é a prática padrão em consultas SQL que envolvem a relação entre duas tabelas.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Errado.

A quarta linha em questão é necessária pois se trata da chave estrangeira que liga as duas tabelas em questão, sem ela não seria possivel a utilização dos JOINs

Assertiva ERRADA.

"...registro NumCliente foi declarado em ambas as tabelas..."

Não faz mal que o mesmo campo ocorra em mais de uma tabela ao mesmo tempo, visto que são tabelas distintas. O que não poderia ocorrer é o mesmo campo ser declarado mais de uma vez na mesma tabela. Isso geraria um erro.

Dito isso, para o SQL não faz mal que você tenha 2 campos de nomes iguais em tabelas diferentes. Pra ele é como se fosse duas coisas totalmente diferentes.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo