Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia caros amigos.
Tenho 2 tabelas e gostaria de saber o que o "cliente não pagou".
Tabela 1 = tbl_pedido
ID | idpedido | idproduto | qtd | valorunitario | valor total
1 | 2 | 2 | 200 | 1 | 200
2 | 2 | 1 | 50 | 1 | 50
3 | 1 | 10 | 200 | 1 | 200
4 | 2 | 1 | 50 | 1 | 50
4 | 3 | 1 | 50 | 1 | 50
Manualmente por SELECT sum, consigo retornar o seguinte resultado:
Total: Pedido 1 = R$ 200,00
Total: Pedido 2 = R$ 300,00
Tabela 2 = pagamentos
ID | idpedido | valorpago |
1 | 2 | 50 |
2 | 2 | 100 |
3 | 3 | 50 |
Considero então, que o PEDIDO 1 não tem pagamento registrado ainda e que o PEDIDO 2 falta R$ 150,00 a ser pago ainda e o PEDIDO 3 já está pago.
De que forma, consigo em 1 SELECT só obter o valor que falta de pagamento nos pedidos e ocultar o que ja foi pago ?
Grato desde já.
Att>
2 horas atrás, Guilherme Luiz disse:
Não seria mais facil incluir algum flag na tabela?
por exemplo
ID | idpedido | idproduto | qtd | valorunitario | valor total | pago
1 | 2 | 2 | 200 | 1 | 200 | 0
2 | 2 | 1 | 50 | 1 | 50 | 1
3 | 1 | 10 | 200 | 1 | 200 | 0
4 | 2 | 1 | 50 | 1 | 50 | 0
4 | 3 | 1 | 50 | 1 | 50 | 1
ai na sua query você faz um WHERE condicionando a coluna PAGO
Desta forma você até poderá criar indices de consulta que melhorará a sua performance para pesquisas com grandes volumes
WHERE pago=1 (1 para pago e 0 para não pago)
Entendi sua ideia, mas, em 1 mesmo pedido pode-se ter mais de 1 pagamento em data, hora, e metodo diferente (cartão, dinheiro, deposito)
Acho que não ficaria facil a interpretação disso depois.Eu faria uma coluna de SALDO na tabela de PEDIDO , uma ou mais triggers na tabela de pagamento manteria esta coluna atualizada , uma breve pesquisa na web mostracomo fazer isto.
A vantagem a coluna responde perguntas como :
Quem tem Saldo (total,parcial e em aberto) em uma só coluna.
Não seria mais facil incluir algum flag na tabela?
por exemplo
ID | idpedido | idproduto | qtd | valorunitario | valor total | pago
1 | 2 | 2 | 200 | 1 | 200 | 0
2 | 2 | 1 | 50 | 1 | 50 | 1
3 | 1 | 10 | 200 | 1 | 200 | 0
4 | 2 | 1 | 50 | 1 | 50 | 0
4 | 3 | 1 | 50 | 1 | 50 | 1
ai na sua query você faz um WHERE condicionando a coluna PAGO
Desta forma você até poderá criar indices de consulta que melhorará a sua performance para pesquisas com grandes volumes
WHERE pago=1 (1 para pago e 0 para não pago)