USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Problema com uma SQL, Soma de valores
Knight
GOIÂNIA
GO - BRASIL
Postada em 15/06/2009 12:12 hs         

Bom dia
Estou com um problema em uma sql e não consigo achar o erro

A SQL é a seguinte:

Select PE.CODIGO,PE.DATA,PE.NPEDIDO,PE.COD_CLIENTE,PE.COD_VENDEDOR,PE.VL_TOTAL,PE.DESCONTO,PE.TOTAL,PE.COD_PAGAMENTO,PE.TIPO" & _

                                          ", ifnull(sum(MD.VTOTAL),0.00) as MDVTOTAL, ifnull(sum(IT.VTOTAL),0.00) as ITVTOTAL, ifnull(sum(PP.VTOTAL),0.00) as PPVTOTAL " & _

                                          ", ifnull(sum(TP.VTOTAL),0.00) as TPVTOTAL, ifnull(sum(PL.VTOTAL),0.00) as PLVTOTAL, ifnull(sum(CO.VTOTAL),0.00) as COVTOTAL " & _

                                          ", ifnull(sum(PS.VTOTAL),0.00) as PSVTOTAL, ifnull(sum(RP.VTOTAL),0.00) as RPVTOTAL, ifnull(sum(PR.VTOTAL),0.00) as PRVTOTAL " & _

                                          ", ifnull(sum(MT.VTOTAL),0.00) as MTVTOTAL" & _

                                          " from PEDIDOS as PE Left join ITENS_MOLDURAS as MD on PE.NPEDIDO=MD.PEDIDO " & _

                                          " left join ITENS_ITENSSOLTOS as IT on PE.NPEDIDO=IT.PEDIDO " & _

                                          " left join ITENS_PPAREDE as PP on PE.NPEDIDO=PP.PEDIDO " & _

                                          " left join ITENS_TAPETES as TP on PE.NPEDIDO=TP.PEDIDO" & _

                                          " left join ITENS_PALHA as PL on PE.NPEDIDO=PL.PEDIDO" & _

                                          " left join ITENS_CORTINAS as CO on PE.NPEDIDO=CO.PEDIDO" & _

                                          " left join ITENS_PERSIANAS as PS on PE.NPEDIDO=PS.PEDIDO" & _

                                          " left join ITENS_REDES as RP on PE.NPEDIDO=RP.PEDIDO" & _

                                          " left join ITENS_PORTA as PR on PE.NPEDIDO=PR.PEDIDO" & _

                                          " left join ITENS_MOTORIZACAO as MT on PE.NPEDIDO=MT.PEDIDO" & _

                                          " where PE.NPEDIDO=@NPEDIDO"
O problema ocorre se por exemplo eu tenho em um pedido "X", 4 Molduras e 1 Itens_soltos ele soma corretamente o valores das 4 molduras mas multiplica o valor do item_solto por 4

Ou seja
se eu tenho

M1 = 10;  M2 = 2; M3 = 1; M4 = 20  o valor total é: 33 valor correto
IS = 10   O valor total fica sendo: 40

Não sei se deu pra entender

 

     
Sandro
não registrado
Postada em 15/06/2009 21:51 hs   
Olá,
 
Seu SQL está meio confuso, você não usou uma cláusula Group By? A princípio deveria dar um erro com as funções agregadas "Sum"...
Bom, eu escrevi outro Select de outra forma, usando subconsultas. Não é muito recomendável o uso intenso de subconsultas, pois podem deixar o processo todo lento. Talvez fosse melhor você criar várias consultas e ligá-las em uma única, mas por enquanto, tente usar isso e veja se funciona:
 

Select PE.CODIGO,PE.DATA,PE.NPEDIDO,PE.COD_CLIENTE,PE.COD_VENDEDOR,PE.VL_TOTAL,PE.DESCONTO,PE.TOTAL,PE.COD_PAGAMENTO,PE.TIPO" & _

"ifnull((Select sum(MD.VTOTAL) From ITENS_MOLDURAS as MD on PE.NPEDIDO=MD.PEDIDO),0.00) as MDVTOTAL, "& _

"ifnull((Select sum(IT.VTOTAL) From ITENS_ITENSSOLTOS as IT on PE.NPEDIDO=IT.PEDIDO),0.00) as ITVTOTAL, "& _

"ifnull((Select sum(PP.VTOTAL) From ITENS_PPAREDE as PP on PE.NPEDIDO=PP.PEDIDO),0.00) as PPVTOTAL, " & _

"ifnull((Select sum(TP.VTOTAL) From ITENS_TAPETES as TP on PE.NPEDIDO=TP.PEDIDO),0.00) as TPVTOTAL, "& _

"ifnull((Select sum(PL.VTOTAL) From ITENS_PALHA as PL on PE.NPEDIDO=PL.PEDIDO),0.00) as PLVTOTAL, "& _

"ifnull((Select sum(CO.VTOTAL) From ITENS_CORTINAS as CO on PE.NPEDIDO=CO.PEDIDO),0.00) as COVTOTAL, " & _

"ifnull((Select sum(PS.VTOTAL) From ITENS_PERSIANAS as PS on PE.NPEDIDO=PS.PEDIDO),0.00) as PSVTOTAL, "& _

"ifnull((Select sum(RP.VTOTAL) From ITENS_REDES as RP on PE.NPEDIDO=RP.PEDIDO),0.00) as RPVTOTAL, "& _

"ifnull((Select sum(PR.VTOTAL) From ITENS_PORTA as PR on PE.NPEDIDO=PR.PEDIDO) ,0.00) as PRVTOTAL, " & _

"ifnull((Select sum(MT.VTOTAL) From ITENS_MOTORIZACAO as MT on PE.NPEDIDO=MT.PEDIDO,0.00) as MTVTOTAL " & _

"from PEDIDOS as PE " & _

"where PE.NPEDIDO=@NPEDIDO"

Sandro.

     
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página