Fórum Sql com campos duplicados #413444

28/02/2012

0

galera eu tenho uma tabela de pedidos onde eu tenho mais de uma forma de pagamento, e estou com um problema na seguinte opção.

Se um cliente comprou em 3 formas de pagamento diferentes, ex: dinheiro, cheque a prazo e boleto, como faço para mostrar as tres no select?

eu tentei assim mas dá erro:


select
pedidos.ped_id,
pedidos.tipo_id,
tipo_venda.tipo,
pedidos.data_cad,
pedidos.data_emissao,
pedidos.data_alt,
pedidos.data_entrega,
pedidos.data_trasmitida,
pedidos.data_cancelamento,
pedidos.data_fechamento,

pedidos.cli_id,
clientes.cli_razao,
clientes.cli_cpf_cnpj,
clientes.rot_id,

pedidos.fun_id,
funcionarios.fun_apelido,

pedidos.ped_total,
pedidos.ped_desconto,
case
when pedidos.status = 0 then PENDENTE
when pedidos.status = 3 then ANALISE
when pedidos.status = 2 then CANCELADO
when pedidos.status = 1 then FINALIZADO
end as status,
pedidos.imei,
pedidos.gps,
pedidos.orc_id,
pedidos.nfe_id,
pedidos.op,
pedidos.cancelado,
pedidos.usu_id,
usuarios.usu_login,
pedidos.ped_obs,
forma_pagamento.fpgto_id,
forma_pagamento.fpgto_descricao,
condicao_de_pagamento.cpgto_id,
condicao_de_pagamento.cpgto_descricao,
condicao_de_pagamento.cpgto_id2,
- condicao_de_pagamento.cpgto_descricao,
condicao_de_pagamento.cpgto_id3,
condicao_de_pagamento.cpgto_descricao
from pedidos
inner join clientes on (pedidos.cli_id = clientes.cli_id)
inner join funcionarios on (pedidos.fun_id = funcionarios.fun_id)
inner join usuarios on (pedidos.usu_id = usuarios.usu_id)
inner join tipo_venda on (pedidos.tipo_id = tipo_venda.tip_id)
left join forma_pagamento on ((pedidos.fpgto_id = forma_pagamento.fpgto_id) or
(pedidos.fpgto_id2 = forma_pagamento.fpgto_id) or
(pedidos.fpgto_id3 = forma_pagamento.fpgto_id))
left join condicao_de_pagamento on ((pedidos.cpgto_id = condicao_de_pagamento.cpgto_id) or
(pedidos.cpgto_id2 = condicao_de_pagamento.cpgto_id) or
(pedidos.cpgto_id3 = condicao_de_pagamento.cpgto_id))
Sidney Abreu

Sidney Abreu

Responder

Posts

28/02/2012

Joel Rodrigues

Cara, se você pode ter um número indefinido de formas de pagamento em um pedido, eu sugiro fazer de uma das seguintes formas:
- Criar um campo bem definido para cada forma de pagamento existente (DINHEIRO, CHEQUE, BOLETO, etc)
- Criar uma tabela para relacionar o pedido com as formas de pagamento, por exemplo, uma tabela com o código do pedido, da forma de pagamento, o valor, prazo e outras informações necessárias.

Já tentei fazer como você está tentando uma vez, mas encontrei alguns problemas como esse que você está enfrentando, aí optei por usar uma das formas supracitadas.

Boa sorte.
Responder

Gostei + 0

28/02/2012

Gustavo Bretas

Sidney, eu não entendi uma coisa, como vc pode ter multiplas formas de pagamento se o relacionamento da forma de pagamento esta 1:1 no pedido?
Responder

Gostei + 0

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

Aceitar