SóProvas


ID
222313
Banca
FGV
Órgão
BADESC
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

Analise a consulta envolvendo uma subconsulta apresentada a seguir.

SELECT Atrib FROM Tabela1
WHERE Atrib2 = ALL (SELECT Atrib2 from Tabela2);

Suponha que os valores que podem retornar no atributo da subconsulta, Atrib2, são os valores 1, 2 e 3.
A consulta externa deve retornar no atributo Atrib os seguintes valores:

I. =1 OR =2 OR =3
II. =1 AND =2 AND =3
III. =1 XOR =2 XOR =3, onde XOR é OU exclusivo

Assinale:

Alternativas
Comentários
  • Eu acho que a questão está mal formulada. 
    O trecho "podem retornar" pra mim indica que poderia ser 1, ou 2 ou 3 ou qualquer combinação destes... deixando a questão sem alternativa correta...
    Porém o "e" em "1,2 e 3" dá a entender que o retorno é restrito aos 3 juntos ou nenhum...
    Me corrijam se eu estiver errado... 

  • Concordo que a questão está mal formulada. Pelo enunciado, Tabela1 possui os atributos Atrib e Atrib2, sendo este último comum à Tabela2.
    Os valores que retornam para Atrib2 são 1 AND 2 AND 3, porque três linhas retornam na consulta interna, mas e para Atrib???
  •  Considere as seguintes tabelas:
    Tabela1
    Atrib      Atrib2
    A             1
    A             2
    A             3
    B             1
    B             2
    C             3
    D             1
    Tabela2
    Atrib2
    1
    2
    3
    A consulta retornará apenas o valor que possua (1,2 e 3) ou seja, A (igual a todos).
    Outro exemplo: Se ao invés de '=' fosse '>' a consulta retornaria D (maior que todos).
  • NÃO EXISTE RESPOSTA CORRETA PARA ESTA QUESTÃO, O RESULTADO DESTA QUERY NÃO RETORNA NADA. O ALL compara cada valor da PRIMEIRA CONSULTA com TODOS OS DA SUBQUERY, ou seja 
    digamos que na Table_1 cotenha os seguintes valores

    Table_1 
    Atrib_1 |  Atrib2
        A              1
        B              2
        c               3

    E na Table_2
    Atrib_1
       1
       2
       3

    Para que por exemplo retorne o A todos os valores de Atrib_1 da Table_2 teriam que ser 1, ou para retorna B todos os valores de Atrib_1 na Table2 teriam que ser 2

    Atrib_1
       1
       1
       1

    Retorn A

    Atrib_1
       2
       2
       2

    Retorna B
  • Sobre os comentários acima, em nenhum momento a questão falou que a CONSULTA EXTERNA retornaria linha, ele apenas menciona os valores que a CONSULTA INTERNA retornará para EXTERNA.

    Resolvendo a questão:

    =ANY é a mesma coisa que OR para todos os resultados retornados na subquery
    =ALL é a mesma coisa que AND para todos os resultados retornados na subquery
    então pra questão:
    =ALL(1,2,3), é a mesma coisa que: (atrib2 = 1 AND atrib2 = 2 AND atrib = 3) necessariamente.
    =ANY(1,2,3) que também pode ser substituído por IN(1,2,3), é a mesma coisa que:  (atrib2 = 1 OR atrib2 = 2 OR atrib = 3).
    que retorne XOR não conheço nenhum operador em sql.

    Logo, o item II é o único correto.

    Resposta letra B

     
  • O Francinildo está certo. De fato, a consulta não retorna nenhuma linha. Mas a questão não perguntou sobre o conjunto de registros retornados, mas sim, sobre a equivalência do uso do ALL para comandos SQL sem ALL. Apenas complementando o que o Francinildo já deixou bem explicado.

    Condição                           |                    Expressão equivalente

    X > ALL (1, 2)                                                      X >  2

    X < ALL (1, 2)                                                      X <  1

    X = ALL (1, 2)                                                      (X = 1) AND (X = 2)

    x <> ALL (1, 2)                                                     (X <> 1) AND (X <> 2)

    Referência: http://www.java2s.com/Tutorial/SQLServer/0020__Query/HowtheALLkeywordworks.htm