Jump to content
neto_celino

Descobrir Pedidos não pagos

Recommended Posts

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

 

Share this post


Link to post
Share on other sites

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)

 

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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 mostra como fazer isto.

 

A vantagem a coluna responde perguntas como :

 

Quem tem Saldo (total,parcial e em aberto) em uma só coluna.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.