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.