Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FCC 2018

Banco de DadosSQL
Código
fc048992
Banca
FCC
Órgão
SEFAZ-SC
Ano
2018
Cargo
Auditor-Fiscal da Receita Estadual - Auditoria e Fiscalização (Prova 3)
O comando digitado foi
  1. ASELECT ip.idPed, ip.idItePed, ip.idPro, pro.nomePro, ip.qtdItePed, pro.PreUnitPro, (ip.qtdItePed * pro.PreUnitPro) as Total FROM Produto pro, ItemPedido ip WHERE ip.idPro = pro.idPro OR ip.idPed <=3 ORDER BY ip.idPed;
  2. BSELECT ip.idPed, ip.idItePed, ip.idPro, pro.nomePro, ip.qtdItePed, pro.PreUnitPro, (ip.qtdItePed * pro.PreUnitPro) as Total FROM Produto pro, ItemPedido ip WHERE ip.idPro = pro.idPro AND ip.idPed <=3 ORDER BY ip.idPed;
  3. CSELECT ip.idPed, ip.idItePed, ip.idPro, pro.nomePro, ip.qtdItePed, pro.PreUnitPro, (ip.qtdItePed * pro.PreUnitPro) as Total FROM Produto pro, ItemPedido ip WHERE ip.idPro = pro.idPro && ip.idPed <3 ORDER BY ip.idPed;
  4. DSELECT idPed, idItePed, idPro, nomePro, qtdItePed, PreUnitPro, (ip.qtdItePed * pro.PreUnitPro) as "Total" FROM Produto, ItemPedido WHERE ip.idPro = pro.idPro AND ip.idPed <=3 ORDER BY ip.idPed;
  5. ESELECT ip.idPed, ip.idItePed, ip.idPro, pro.nomePro, ip.qtdItePed, pro.PreUnitPro, SVG(ip.qtdItePed * pro.PreUnitPro) as "Total" FROM Produto pro, ItemPedido ip WHERE ip.idPro = pro.idPro AND ip.idPed <=3 ORDER BY ip.idPed;
Revelar gabarito e comentário

GabaritoB — SELECT ip.idPed, ip.idItePed, ip.idPro, pro.nomePro, ip.qtdItePed, pro.PreUnitPro, (ip.qtdItePed * pro.PreUnitPro) as Total FROM Produto pro, ItemPedido ip WHERE ip.idPro = pro.idPro AND ip.idPed <=3 ORDER BY ip.idPed;

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Comandos SQL: sintaxe de consulta com junção e filtro

Gabarito: letra B. A única alternativa que apresenta sintaxe SQL correta para realizar uma junção entre as tabelas Produto e ItemPedido com condição de igualdade (ip.idPro = pro.idPro) e filtro adicional (ip.idPed <=3), incluindo coluna calculada e alias, é a alternativa B.

A questão testa conhecimento de sintaxe SQL, especialmente: uso correto de operadores AND/OR, aliases de tabela, nomes de colunas qualificados, e funções válidas.

Alternativa A — ❌ Incorreta

Usa OR na cláusula WHERE: ip.idPro = pro.idPro OR ip.idPed <=3. Isso transforma a junção em uma condição alternativa, gerando um produto cartesiano para linhas que não atendem à igualdade, o que não corresponde a uma junção inner join correta. O correto seria AND para combinar a condição de junção e o filtro.

Alternativa B — ✅ Correta ⟵ GABARITO

Apresenta a sintaxe correta: SELECT ip.idPed, ... FROM Produto pro, ItemPedido ip WHERE ip.idPro = pro.idPro AND ip.idPed <=3 ORDER BY ip.idPed;. Utiliza AND para combinar a condição de junção e o filtro, aliases de tabela (pro, ip), colunas qualificadas, e coluna calculada com multiplicação e alias Total.

Alternativa C — ❌ Incorreta

Utiliza o operador && (não padrão SQL), que em alguns bancos pode ser aceito, mas não é padrão ANSI SQL. Além disso, usa <3 em vez de <=3, divergindo do filtro esperado. O padrão é AND.

Alternativa D — ❌ Incorreta

Falta a definição de aliases de tabela (ip, pro) na cláusula FROM, mas as colunas são referenciadas com esses aliases (ex.: ip.idPed). Isso causa erro de sintaxe porque os aliases não foram definidos. Além disso, colunas sem qualificação como nomePro são ambíguas. A cláusula FROM deveria conter FROM Produto pro, ItemPedido ip.

Alternativa E — ❌ Incorreta

Usa SVG(ip.qtdItePed * pro.PreUnitPro)SVG não é uma função SQL válida. O correto seria apenas a expressão aritmética ou usar SUM se fosse agregação. Também coloca o alias entre aspas duplas, o que é válido, mas a função inválida torna a consulta incorreta.

Gabarito: letra B.

Link permanente: /questoes/fc048992