none
Select com INNER JOIN? RRS feed

  • Pergunta

  • Galera, estou tentando fazer um select com INNER JOIN, porém não estou conseguindo os resultados que quero;

    veja o código:

     

    SELECT DISTINCT Dad.TBDadosFatura_Numero, Dad.TBDadosFatura_Nome, Dad.TBDadosFatura_DataEntrada, Hon.TBAmb_Descricao, Dad.TBDadosFatura_ValorTotal

    FROM TBDadosFatura Dad

    INNER JOIN TBLHonorarios Hon ON Dad.GuiaNumero = Hon.GuiaNumero

    WHERE (Hon.TBCentroCusto_Codigo IN ('0100003')

    OR Hon.TBCentroCusto_Codigo IN ('0100062')

    OR Hon.TBCentroCusto_Codigo IN ('0100064')

    OR Hon.TBCentroCusto_Codigo IN ('0100031')

    OR Hon.TBCentroCusto_Codigo IN ('0100032')

    OR Hon.TBCentroCusto_Codigo IN ('0100028')

    OR Hon.TBCentroCusto_Codigo IN ('0100008')

    OR Hon.TBCentroCusto_Codigo IN ('0100020')

    OR Hon.TBCentroCusto_Codigo IN ('0100053')

    OR Hon.TBCentroCusto_Codigo IN ('0100054')

    OR Hon.TBCentroCusto_Codigo IN ('0100055'))

    AND (Dad.TBDadosFatura_DataEntrada >= '20081101'

    AND Dad.TBDadosFatura_DataEntrada <= '20081130')

    ORDER BY Dad.TBDadosFatura_Numero ASC, Dad.TBDadosFatura_DataEntrada ASC

     

    mas acontece que a TBLHonorarios tem relacionamento com a TBDadosFatura, e quando existe mais de um registro na TBLHonorarios eles aparecem, porém, só deve ser mostrado apenas o primeiro cadastrado; Como faço para obter o resultado que quero.

     

    OBS: Estou usando o SQL Server 2005 Enterprise e Visual Basic 6, sendo que esse resultado vai para um relatório em Crystal Reports 8.5

    sexta-feira, 5 de dezembro de 2008 18:18

Respostas

  • Boa Tarde,

     

    Primeiro acho que podemos fazer um trabalho de enxugar o seu código. Ex:

     

    Code Snippet

    SELECT DISTINCT Dad.TBDadosFatura_Numero, Dad.TBDadosFatura_Nome, Dad.TBDadosFatura_DataEntrada, Hon.TBAmb_Descricao, Dad.TBDadosFatura_ValorTotal

    FROM TBDadosFatura Dad

    INNER JOIN TBLHonorarios Hon ON Dad.GuiaNumero = Hon.GuiaNumero

    WHERE (Hon.TBCentroCusto_Codigo IN (

    '0100003','0100062','0100064','0100031','0100032','0100028',

    '0100008','0100020','0100053','0100054','0100055') )

    AND (Dad.TBDadosFatura_DataEntrada >= '20081101'

    AND Dad.TBDadosFatura_DataEntrada <= '20081130')

    ORDER BY Dad.TBDadosFatura_Numero ASC, Dad.TBDadosFatura_DataEntrada ASC

     

     

    Posteriormente para retornar o primeiro cadastrado, é necessário o MIN.

     

    Code Snippet

    SELECT Dad.TBDadosFatura_Numero, Dad.TBDadosFatura_Nome, Dad.TBDadosFatura_DataEntrada,

    MIN(Hon.TBAmb_Descricao), Dad.TBDadosFatura_ValorTotal

    FROM TBDadosFatura Dad

    INNER JOIN TBLHonorarios Hon ON Dad.GuiaNumero = Hon.GuiaNumero

    WHERE (Hon.TBCentroCusto_Codigo IN (

    '0100003','0100062','0100064','0100031','0100032','0100028',

    '0100008','0100020','0100053','0100054','0100055') )

    AND (Dad.TBDadosFatura_DataEntrada >= '20081101'

    AND Dad.TBDadosFatura_DataEntrada <= '20081130')

    GROUP BY Dad.TBDadosFatura_Numero, Dad.TBDadosFatura_Nome, Dad.TBDadosFatura_DataEntrada, Dad.TBDadosFatura_ValorTotal

    ORDER BY Dad.TBDadosFatura_Numero ASC, Dad.TBDadosFatura_DataEntrada ASC

     

     

    [ ]s,

     

    Gustavo

    sexta-feira, 5 de dezembro de 2008 18:28