select POSTGRE duplicando registro
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
Curtidas 0
Respostas
Eriley Barbosa
18/08/2010
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
GOSTEI 0
Jair N.
18/08/2010
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.
GOSTEI 0
Adimar
18/08/2010
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)
GOSTEI 0
Adimar
18/08/2010
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 ???
GOSTEI 0
Adimar
18/08/2010
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 ???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)
GOSTEI 0
Jair N.
18/08/2010
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))
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))
GOSTEI 0