none
dúvida operadores em SQL (SUB consultas ) ? RRS feed

  • Pergunta

  • Já dei uma boa olhada nos site mas esta difícil de compreender alguns conceitos que envolvem a subconsulta , alguém pode me explicar o conceito de ANY E ALL  dar algum exemplo iria ajudar bastante .  

    terça-feira, 26 de maio de 2015 14:43

Respostas

  • Matheus,

    Apenas complementando o exemplo com "ALL", onde ele vai verificar se o valor está entre um dos registros armazenados na coluna indicada. Também possui um retorno booleano.

    Segue a comparação com o "valor = 1"

    Segue a comparação com o "valor = 0"


    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    • Marcado como Resposta Matheus MSDN sexta-feira, 5 de junho de 2015 18:49
    terça-feira, 26 de maio de 2015 19:35
    Moderador

Todas as Respostas

  • Matheus,

    Este é uma instrução de SQL "ISO" (padrão) e pode ser utilizado no SQL Server. Eles não são muito utilizados, mas fazem parte do conteúdo para certificação como MTA "Database Fundamentals".

    SOME e ANY são semelhantes e lembram "um pouco" a instrução "IN", mas retornam um valor booleano "True" ou "False". Os valores para comparação sempre devem ser baseados em uma única coluna.

    Ao menos um dos valores deve atender a condição indicada.

    Segue abaixo um script "SQL" de exemplo:

    SELECT * FROM TB_TEST;
    
    DECLARE @VALOR int = 3
    --É "Menor" que "Algum" dos números desta coluna
    SELECT IIF((@VALOR < SOME (SELECT ID_CLIENT FROM TB_TEST)), 'É', 'NÃO É')
    
    --É "Diferente" que "Algum" dos números desta coluna
    SELECT IIF((@VALOR <> SOME (SELECT ID_CLIENT FROM TB_TEST)), 'É diferente', 'É igual')
    
    --É "Menor" que "Qualquer" dos números desta coluna
    SELECT IIF((@VALOR < ANY (SELECT ID_CLIENT FROM TB_TEST)), 'É', 'NÃO É')
    
    --É "Diferente" que "Qualquer" dos números desta coluna
    SELECT IIF((@VALOR <> ANY (SELECT ID_CLIENT FROM TB_TEST)), 'É diferente', 'É igual')
    GO


    Segue a Evidência de teste de como funciona este script:

    Com "valor = 3"

    Com "valor = 2"

    Para maiores informações veja:

    https://technet.microsoft.com/pt-br/library/ms187074%28v=sql.105%29.aspx

    https://msdn.microsoft.com/pt-br/library/ms175064.aspx


    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    terça-feira, 26 de maio de 2015 17:34
    Moderador
  • Matheus,

    Apenas complementando o exemplo com "ALL", onde ele vai verificar se o valor está entre um dos registros armazenados na coluna indicada. Também possui um retorno booleano.

    Segue a comparação com o "valor = 1"

    Segue a comparação com o "valor = 0"


    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    • Marcado como Resposta Matheus MSDN sexta-feira, 5 de junho de 2015 18:49
    terça-feira, 26 de maio de 2015 19:35
    Moderador