none
Como utilizar DISTINCT na minha SELECT RRS feed

  • Pergunta

  • BOM DIA . FIZ UMA SELECT:

    SELECT     vw_rs_entidade_func.codigo_entidade, vw_rs_entidade_func.fantasia_funcionario, vw_rs_entidade.razao_social, vw_rs_entidade.situacao, vw_rs_entidade.id_tipo
    FROM         vw_rs_entidade INNER JOIN
                          vw_rs_entidade_func ON vw_rs_entidade_func.razao_social_cliente = vw_rs_entidade.razao_social

     QUANDO EXECUTO ESTA QUERY NO SQL TENHO RESULTADOS DUPLICADOS.

    COMO QUE EU FAÇO PARA QUE A COLUNA DESTACADA EM CIMA NÃO TENHA DUPLICIDADE?

     

    quinta-feira, 4 de agosto de 2011 12:45

Respostas

Todas as Respostas

  • Marcos,

     

    Vamos la:

    A utilização do distinct é a seguinte:

    SELECT DISTINCT SeuCampo1, SeuCampo2, SeuCampo3 FROM SuaTabela

    Mas saiba que o distinct trabalha por linha de query, ou seja, ele não ira repetir toda a linha da query cuja qual foi inserida, portanto, segue um exemplo:

    Fabrizzio 18 São Paulo

    Marcelo 25 São Paulo

    Fabrizzio  19 São Paulo

    Veja que apesar do Fabrizzio e são paulo se repetir 2 vezes, a idade é diferente, portanto são linhas diferentes e não serão excluidas pelo distinct.

    No exemplo acima, para se excluir os 2 Fabrizzio, primeiro voce deve pensar em: O que eu querio de informação? Teoricamente a melhor opção é uma função de agregação com um grup by, vamos supor que eu queira o usuario Fabrizzio com a idade mais avançada, então ficaria:

    SELECT Usuario, MAX(Idade), Cidade

    FROM SuaTabela

    GROUP BY Usuario, Cidade

    Tome como regra que todos os campos que não possuem função de agregação devem estar especificados no group by.

    Caso isso não seja o sulficiente para trazer o resultado como voce deseja, uma opção é:

    Em relação ao distinct principal, a regra continua, mas o que voce faria seria algo mais ou menos assim;

    SELECT Distinct SeuCampo, (Subquery 1), (SubQuery2), (Subquery3)

    FROM SuaTabela

    Ou seja, trabalhar com subqueries, não são muito performaticas e lembre-se que a subquery deve retornar apenas um resultado.

    Se voce postar uma massa de dados (Coisa de 5 linhas), e falar como voce quer o resultado, posso te ajudar na query.


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    quinta-feira, 4 de agosto de 2011 12:53
    Moderador
  • Bom Dia,

    Possivelmente a coluna razao_social repete, mas para cada repetição deve haver um valor diferente para fantasia_funcionario e isso não é uma repetição.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    • Marcado como Resposta Marcos BLopes terça-feira, 16 de agosto de 2011 13:27
    quinta-feira, 4 de agosto de 2011 13:14