Pular para o conteúdo
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #84290
    ericclauber
    Participante

      Boa tarde!

      Estou querendo puxar os produtos de uma tabela1 com condiçao que tenham movimento em determinado periodo de tabela2.

      No seguinte select da certo, mas me traz os produtos repedidamente, pois tem varias vezes na tabela2.

      select pcprodut.codprod,pcprodut.descricao,pcprodut.embalagem,pcprodut.qtunit,
      pcprodut.unidade,pcprodut.qtunitcx,
      pcprodut.unidademaster,pcprodut.codauxiliar,pcprodut.codauxiliar2 from pcprodut,pcmov where pcprodut.codprod=pcmov.codprod
      and pcmov.dtmov between ’01/01/2008′ and ’31/12/2008′ and pcprodut.codauxiliar is null or pcprodut.codauxiliar2 is null

      Neste select so estou querendo eliminar a repetiçao dos produtos.

      Aguardo retorno, obrigado.[/b]

      #84291
      Rodrigo Mesquita
      Participante

        tente assim

        select pcprodut.codprod,
        pcprodut.descricao,
        pcprodut.embalagem,
        pcprodut.qtunit,
        pcprodut.unidade,
        pcprodut.qtunitcx,
        pcprodut.unidademaster,
        pcprodut.codauxiliar,
        pcprodut.codauxiliar2
        from pcprodut
        where pcprodut.codprod in
        (select distinct (cod_prod)
        from pcmov
        where pcmov.dtmov between ’01/01/2008′ and ’31/12/2008′)
        and pcprodut.codauxiliar is null or pcprodut.codauxiliar2 is null

        #84298
        DanielB
        Participante

          el primer problema que veo en este select es
          select pcprodut.codprod,pcprodut.descricao,pcprodut.embalagem,pcprodut.qtunit,
          pcprodut.unidade,pcprodut.qtunitcx,
          pcprodut.unidademaster,pcprodut.codauxiliar,pcprodut.codauxiliar2 from pcprodut,pcmov where pcprodut.codprod=pcmov.codprod
          and pcmov.dtmov between ’01/01/2008′ and ’31/12/2008′ and pcprodut.codauxiliar is null or pcprodut.codauxiliar2 is null

          ese or con un and

          lo otro es repeticion pues si hay mas de un mov para un producto en ese periodo se repiten

          aun sin entender el motivo del or o sera que se quizo escribir
          (pcprodut.codauxiliar is null or pcprodut.codauxiliar2 is null ) que uno u otro campo sea nulo?

          dejando eso de lado…

          select pcprodut.codprod,pcprodut.descricao,pcprodut.embalagem,pcprodut.qtunit,
          pcprodut.unidade,pcprodut.qtunitcx,
          pcprodut.unidademaster,pcprodut.codauxiliar,pcprodut.codauxiliar2
          from pcprodut
          where (pcprodut.codauxiliar is null or pcprodut.codauxiliar2 is null )
          and exists (select 1 from pcmov where pcprodut.codprod=pcmov.codprod
          and pcmov.dtmov between ’01/01/2008′ and ’31/12/2008′ )

          es bastante mas eficiente

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.