GARANTIR DESCONTO

Fórum select POSTGRE duplicando registro #383933

18/08/2010

0

SELECT cf.pedido, cf.data, nc.qtd, nc.preco, c.nome as comprador, c.nome as vendedor, c.cnpj as cnpj comprador FROM notacalculo nc LEFT OUTER JOIN contratos cf ON (nc.pedido = cf.pedido) LEFT OUTER JOIN clientes c ON (nc.codcomp = c.codigo) WHERE cf.data BETWEN '01/01/10' AND '30/01/10' AND             (nc.codcomprador = 10 AND nc.corretagemcomprador > 0) OR             (nc.codvendedor   = 10 AND  nc.corretagemvendedor > 0)
Adimar

Adimar

Responder

Posts

18/08/2010

Eriley Barbosa

Tente com os parenteses fazendo a prioridade   SELECT cf.pedido, cf.data, nc.qtd, nc.preco, c.nome as comprador, c.nome as vendedor, c.cnpj as cnpj comprador FROM notacalculo nc LEFT OUTER JOIN contratos cf ON (nc.pedido = cf.pedido) LEFT OUTER JOIN clientes c ON (nc.codcomp = c.codigo) WHERE (cf.data BETWEN '01/01/10' AND '30/01/10') AND            ( (nc.codcomprador = 10 AND nc.corretagemcomprador > 0) OR             (nc.codvendedor   = 10 AND  nc.corretagemvendedor > 0))   Atenciosamente   Eriley
Responder

Gostei + 0

18/08/2010

Jair N.

Boa tarde, olha sua seleção está errada, observe que o nome do comprador e o vendedor esta vindo da mesma tabela denominada "c" faça a correção destes que não vai se repetir.
Responder

Gostei + 0

19/08/2010

Adimar

SELECT cf.pedido, cf.data, nc.qtd, nc.preco, cp.nome as comprador, vd.nome as vendedor, cp.cnpj as cnpj comprador FROM notacalculo nc LEFT OUTER JOIN contratos cf ON (nc.pedido = cf.pedido) LEFT OUTER JOIN clientes cp ON (nc.codcomp = c.codigo) LEFT OUTER JOIN clientes vd ON (nc.codvend = c.codigo)   WHERE (cf.data BETWEN '01/01/10' AND '30/01/10')  AND             (nc.codcomprador = 10 AND nc.corretagemcomprador > 0) OR             (nc.codvendedor   = 10 AND  nc.corretagemvendedor > 0)
Responder

Gostei + 0

19/08/2010

Adimar

SELECT cf.pedido, cf.data, nc.qtd, nc.preco, cp.nome as comprador, vd.nome as vendedor, cp.cnpj as cnpj comprador FROM notacalculo nc LEFT OUTER JOIN contratos cf ON (nc.pedido = cf.pedido) LEFT OUTER JOIN clientes cp ON (nc.codcomp = c.codigo) LEFT OUTER JOIN clientes vd ON (nc.codvend = c.codigo)   WHERE (cf.data BETWEN '01/01/10' AND '30/01/10')  AND             (nc.codcomprador = 10 AND nc.corretagemcomprador > 0) OR             (nc.codvendedor   = 10 AND  nc.corretagemvendedor > 0)
      ASSIM DARIA CERTO ???
Responder

Gostei + 0

19/08/2010

Adimar

  SELECT cf.pedido, cf.dtvenda, cf.qtde, cf.preco, cp.nome as comprador, vd.nome as vendedor,
clientes.cnpj_cpf as cliente FROM  notacalculo nc
LEFT OUTER JOIN contratos cf ON (nc.codpedido = cf.pedido)
LEFT OUTER JOIN clientes  cp ON (nc.codcomp = cp.codigo)
LEFT OUTER JOIN clientes  vd ON (nc.codvend = vd.codigo) WHERE (cf.dtvenda BETWEEN '2010-08-11' AND '2010-08-30')  AND
      (nc.codcomp = 1 AND  nc.corretcomp > 0) OR
      (nc.codvend = 1 AND  nc.corretvend > 0)  
     vamos ao sql correto, esse campo: clientes.cnpj_cpf as cliente NA VERDADE É O CNPJ DO CLIENTE 1 QUE ESTA EM WHERE. SENDO ELE VENDEDOR OU COMPRADOR.   NÃO SEI COMO SELECIONAR O CNPJ DO CLIENTE DIGITADO NA PESQUISA? TA DANDO ERRADO. ASSIM DARIA CERTO ???
Responder

Gostei + 0

20/08/2010

Jair N.

Bom dia, veja só, voce está fazendo o relacionamento apenas com "c" faça as correções assim como:

     SELECT  cf.pedido, cf.data
                ,  nc.qtd, nc.preco
                ,  cp.nome AS comprador
                ,  vd.nome AS vendedor
                ,  cp.cnpj   AS cnpj comprador
         FROM  notacalculo nc
 LEFT  JOIN  contratos cf 
             ON (nc.pedido = cf.pedido)   LEFT JOIN  clientes cp
             ON (nc.codcomp = cp.codigo)
  LEFT JOIN  clientes vd
             ON  (nc.codvend = vd.codigo)
       WHERE (cf.data BETWEN '01/01/10' AND '30/01/10') 
           AND  ((nc.codcomprador = 10 AND nc.corretagemcomprador > 0)
            OR    (nc.codvendedor   = 10 AND  nc.corretagemvendedor > 0))

Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar