Questão FC372830
Considere a existência de duas tabelas relacionadas em um banco de dados: Pedidos e Transportador. A tabela Pedidos possui 2 campos numéricos: PedidoID (chave primária) e Transport
Linguagem SQL
FCC · 2019
Considere a existência de duas tabelas relacionadas em um banco de dados: Pedidos e Transportador. A tabela Pedidos possui 2 campos numéricos: PedidoID (chave primária) e TransportadorID (chave estrangeira). A tabela Transportador possui o campo TransportadorID (chave primária, numérico) e TransportadorNome (cadeia de caracteres). Para listar o número de Pedidos de cada Transportador utiliza-se a instrução SQL:
- SELECT Transportador.TransportadorNome, COUNT(Pedidos.PedidoID)AS “NumeroPedidos” FROM Pedidos RIGHT JOIN FROM Pedidos ON Pedidos.TransportadorID = Transportador.TransportadorID ORDER BY TransportadorNome;
- SELECT Transportador.TransportadorNome, COUNT(Pedidos.PedidoID) AS NumeroPedidos FROM Pedidos FULL JOIN Transportador WHERE Pedidos.TransportadorID = Transportador.TransportadorID GROUPBY TransportadorNome;
- SELECT Transportador.TransportadorNome, COUNT(Pedidos.PedidoID) AS “NumeroPedidos” FROM Pedidos, Transportador INNER JOIN ON Pedidos.TransportadorID = Transportador.TransportadorID GROUP BY TransportadorNome;
- SELECT Transportador.TransportadorNome, COUNT(Pedidos.PedidoID) AS NumeroPedidos FROM Pedidos LEFT JOIN Transportador ON Pedidos.TransportadorID = Transportador.TransportadorID ORDER BY TransportadorNome;
- SELECT Transportador.TransportadorNome, COUNT(Pedidos.PedidoID) AS NumeroPedidos FROM Pedidos LEFT JOIN Transportador ON Pedidos.TransportadorID = Transportador.TransportadorID GROUP BY TransportadorNome;
Mostrar resposta e comentário
Gabarito
Errado
Comentário do professor
A consulta correta usa FROM Pedidos LEFT JOIN Transportador ON Pedidos.TransportadorID = Transportador.TransportadorID para manter todas as linhas de Pedidos e trazer o nome do transportador quando existir.
O agrupamento por TransportadorNome (GROUP BY) faz com que as linhas sejam consolidadas por transportador, permitindo obter a quantidade de pedidos por cada um.
A função COUNT(Pedidos.PedidoID) conta os pedidos em cada grupo; por usar a chave primária, não conta valores nulos e assim retorna o número correto de pedidos associados ao respectivo transportador. O alias NumeroPedidos apenas nomeia a coluna de resultado.
Resultado prático: cada linha do resultado mostra o TransportadorNome e a quantidade de pedidos dele; pedidos sem transportador aparecem no grupo com nome nulo, garantindo que todas as ordens sejam consideradas.
Conteúdo do catálogo FC Concursos · Atualizado em