Eliminar linhas de produto cartesiano.

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
goj1
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 5
Registrado em: Sex, 14 Set 2012 10:08 am

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.
gee
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 13
Registrado em: Ter, 23 Out 2012 8:43 am
Geraldo Viana Jr
Oracle SQL - PL/SQL Developer
Oracle Developer Application

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);
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes