Dúvida em SQL Postgres [RESOLVIDO]

4 respostas
catia.alessandra

Boa tarde.

Estou fazendo um relatório no IReport, de movimentação de produtos.
Cada produto pode ter um ou mais formecedores.
Meu problema é quando o produto tem mais de um fornecedor, pois ele repete a linha.
O que eu poderia usar é check box que diz qual é o fornecedor atual.
Mas o problema é que tem produtos que não tem nenhum fornecedor associado, aí se eu usar aquele campo para filtro, alguns produtos não vão aparecer no resultado.

Pensei em usar CASE WHEN, mas não funcionou, apenas trazia o campo em branco (do fornecedor)

Alguma sugestão? Alguma dúvida?

Desde já obrigada. :smiley:

P.S. - Pedaço da minha sql que se refere ao problema. ^ ^

select bp.name as parceiro FROM m_product p LEFT JOIN M_Product_PO ppo on p.m_product_id=ppo.m_product_id LEFT JOIN c_bpartner bp on ppo.c_bpartner_id=bp.c_bpartner_id

4 Respostas

ErickRAR

A primeira coisa que veio a cabeça foi utilizar DISTINCT no produto, porém não sei se vai gerar erro por ter varios fornecedores.

catia.alessandra

Não pode dar problema por causa de agregação?
Pois tenho um SUM (na quantidade) e um MAX (data de movimentação).

o DISTINCT você quer dizer no código/nome do produto? (ou id)

Obrigada.

ErickRAR

Sim, deve dar inconsistência nos dados. E se utilizar o filtro pro fornecedor junto com “OR fk_fornecedor=null” ?

catia.alessandra

fiz como vc falou, a SQL ficou assim:

select bp.name as parceiro FROM m_product p LEFT JOIN M_Product_PO ppo on p.m_product_id=ppo.m_product_id and ((iscurrentvendor='Y') or ppo.c_bpartner_id=null) LEFT JOIN c_bpartner bp on ppo.c_bpartner_id=bp.c_bpartner_id

Aparentemente funcionou, tinha uma linha repetida, diminuiu uma linha.

:smiley:

Obrigada pela ajuda.

Criado 25 de julho de 2012
Ultima resposta 25 de jul. de 2012
Respostas 4
Participantes 2