-
Também não entendi ?
-
Como o I trará mesmo resultado que o IV se há um valor NULL e estão usando o operador ' < '? Para testar um valor NULL utiliza-se as cláusulas IS NULL ou IS NOT NULL.
"[..] um valor desconhecido não pode ser comparado logicamente com outro valor" (Fonte: https://technet.microsoft.com/pt-br/library/ms191270%28v=sql.105%29.aspx )
-
Gabarito do site esta errado. Gabarito da banca é letra D. A I esta errada pela justificativa da colega Lais Marques
-
Procurei la no gabarito e nao achei sequer esse cargo (Analista Judiciario - TI), mas a explicacao da colega Lais esta correta
-
O comando I não iria funcionar, pois, Segundo o W3School:
It is not possible to test for NULL values with comparison operators, such as =, <, or <>.
We will have to use the IS NULL and IS NOT NULL operators instead.
http://www.w3schools.com/sql/sql_null_values.asp
-
A resposta certa segundo gabarito da Banca é realmente a E:
-
Realmente equivoquei-me. Gabarito é a letra E. As três consultas retornam o mesmo resultado pelo menos para o MySQL. Veja em: http://sqlfiddle.com/#!9/83010/11 o resultado do SQL da I.
-
Esta questão é bastante complexa. Infelizmente tem resposta, entretanto esse é o tipo de comando sql que é considerado errado do ponto de vista semântico uma vez que NULL não é nada, ou seja, seu resultado é indeterminado e somos instruídos a evitar de construir consultas complexas baseadas em comparações justamente com o valor NULL. Para mim isto deveria ser anulado! Não testa o conhecimento de SQL.
-
Resolvendo a primeira consulta:
O produto cartesiano formado é o seguinte:
A(s1) C(s1) A(s2) C(s2)
1 - null - 1 - null
3 - 8 - 1 - null
5 - 8 - 1 - null
1 - null - 3 - 8
3 - 8 - 3 - 8
5 - 8 - 3 - 8
1 - null - 5 - 8
3 - 8 - 5 - 8
5 - 8 - 5 - 8
Depois da cláusula WHERE apenas as linhas em negrito restarão.
Considerando que ele só quer s1* e DISTINCT temos
1 - null
3 - 8
5 - 8
-
@kleber Santos, neguei sua solução até o último momento, mas vc está certo. A cláusula WHERE descarta as linhas que têm o valor NULL na coluna s2.C. A comparação é estranha, mas o resultado é simples: o descarte da linha correspondente. As colunas s1.C que têm valor NULL permanecem porque não sofrem comparações. Quanto a s1.* e DISTINCT não há dúvidas.
Obrigado pela ajuda. :-)
-
"!=" funcionou no meu teste no Sql Server, bem como todas as consutlas trouxeram o mesmo resultado.
-
Decorem: Operações que envolvem NULL
- Not NULL => NULL
-NULL or False => NULL
- NULL or True => True
- NULL or NULL => NULL
- NULL and False => False
- NULL and True => NULL
- NULL and NULL => NULL
-
GABARITO CORRETO É LETRA E
http://sqlfiddle.com/#!18/a3de6/8