-
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