Página 1 de 1

Eliminar linhas de produto cartesiano.

Enviado: Ter, 05 Ago 2014 3:26 pm
por goj1
Olá,

Quando se tem uma tabela com um cod (pessoa, por exemplo) e a tabela compras com o cod do comprador, data de compra e tipo de pagamento...

Se eu desejar criar um relatório para saber se a pessoa pagou a dinheiro mostrar "dinheiro" ou cartão "cartão" por meio de um case, porém se houver um terceiro tipo de pagamento "cheque" o cod do cliente será mostrado com o tipo de pagamento em branco.
O problema é, se eu desejar retornar uma linha por cliente, falando se ele pagou por cartão ou não. Como eu faço isso já que as linhas são diferentes e o dintinct não funciona para esse caso já que é um produto cartesiano?

grato pela atenção.

Re: Eliminar linhas de produto cartesiano.

Enviado: Qui, 07 Ago 2014 8:35 am
por gee
E ai cara, não sei se compreendi muito bem sua pergunta, mas se entendi bem minha ideia é a seguinte:

Se o pagamento tiver sido feito através de outra forma de pagamento que seja dinheiro ou esteja vazio,
entende-se que ele não tenha utilizado cartão seja qualquer outra forma de pagamento que não seja dinheiro ou nula.

Portanto, acredito que se usar o código a baixo, você conseguirá este resultado(se é mesmo este que está buscando.

OBS: Eu ainda não testei o codigo e estou escrevendo rapidamente do meu trabalho, então, se houver algum erro verifique bem o código. e se rodar poste aqui se deu certo.

Vlw!

Selecionar tudo

SELECT p.cod, p.nome, p.sobrenome, p.cod c.data_pag, tc.ipo_pag,
DECODE(c.tipo_pag,IS NULL,'Não Usou Cartão',DECODE(c.tipo_pag,'Dinheiro','Não Usou Cartão'),'Usou cartão') AS "Tipo Pagamento"
FROM pessoas p 
JOIN compras c
ON   (c.cod =p.cod);