SóProvas


ID
205486
Banca
FEPESE
Órgão
SEFAZ-SC
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

Considere as tabelas Itens (codi, descricao, peso), Fornecedores (codf, nome, cidade) e Fornecimentos (codi, codf, quantidade). As chaves primárias das tabelas Itens, Fornecedores e Fornecimentos são, respectivamente, codi, codf e (codi,codf). Os atributos codi e codf em Fornecimentos são chaves estrangeiras para as tabelas Itens e Fornecedores, respectivamente.

A instrução de consulta PL/SQL do Oracle que responde corretamente a consulta "Buscar os nomes dos fornecedores de Florianópolis que fornecem pregos ou parafusos" é:

Alternativas
Comentários
  • ANY (SOME)

    O operador ANY (e o seu sinónimo SOME) permite a uma consulta externa fazer comparações usando < ou > com os elementos de um conjunto devolvido pela subconsulta. Este operador devolve TRUE se uma das linhas do conjunto satisfaz a condição, ou seja, devolve FALSE se nenhuma satisfaz a condição. Este operador pode ser negado com NOT.

    A consulta abaixo devolve os empregados que ganham mais que algum empregado do departamento 30. Isto é o mesmo que afirmar que procuramos os que ganham mais que o salário mínimo do departamento 30.

    select ename, sal, job, deptno
    from emp
    where sal > ANY (select distinct sal
                     from emp
                     where deptno=30);
    
    ENAME      SAL                    JOB       DEPTNO                 
    ---------- ---------------------- --------- ---------------------- 
    KING       5000                   PRESIDENT 10                     
    FORD       3000                   ANALYST   20                     
    SCOTT      3000                   ANALYST   20                     
    JONES      2975                   MANAGER   20                     
    BLAKE      2850                   MANAGER   30                     
    CLARK      2450                   MANAGER   10                     
    ALLEN      1600                   SALESMAN  30                     
    TURNER     1500                   SALESMAN  30                     
    MILLER     1300                   CLERK     10                     
    WARD       1250                   SALESMAN  30                     
    MARTIN     1250                   SALESMAN  30                     
    ADAMS      1100                   CLERK     20                     
    
    12 rows selected
    

  • O erro da D é utilizar codf no lugar de codi

    errado:

      WHERE f.codi = fo.codi
           AND p.codf = fo.codf

    correto:

      WHERE f.codf = fo.codf
           AND p.codi = fo.codi

     

  • Prezados,

    A alternativa B apresentaria erro ao comparar codi=codi  e codf=codf , pois é o mesmo nome do atributo nas duas tabelas
    A alternativa C apresentaria erro pois o union iria trazer os fornecedores de prego e os fornecedores de parafuso de florianópolis , e não os fornecedores de prego ou parafuso em florianópolis 
    A alternativa D apresenta erro pois não existe fo.codi
    A alternativa E está errada pois o exists não está fazendo nenhuma referencia ao select externo, com isso irá trazer resultados errados.

    Portanto a alternativa correta é a letra A