SOMAR CAMPOS DE TRES TABELAS SQL SERVER

 Tópico anterior Próximo tópico Novo tópico

SOMAR CAMPOS DE TRES TABELAS SQL SERVER

SQL / DATABASE

 Compartilhe  Compartilhe  Compartilhe
#487070 - 11/02/2019 15:36:12

SANROMAN
MONGAGUA
Cadast. em:Setembro/2013


Boa tarde,

Tenho que somar o valores vendas, vendas a prazo e suplementos que estão em três tabelas distintas.

Usei o código abaixo, pois não consegui de jeito nenhum usar inner join, left join e union all para construir a consulta. O resultado vem repetido para os três valores, o que não é o correto. Segue o código usado que passa o valor correto.

   Private Sub ComposicaoDeEntradasEmDinheiro()

        Using con As SqlConnection = conectarSqlServer()

            con.Open()

            Dim soma As Decimal
            Dim venda As Decimal
            Dim vendaprazo As Decimal
            Dim suplemento As Decimal

            txtSuplDinCx.Text = String.Empty

            Try
                Using strCom As SqlCommand = New SqlCommand("SELECT SUM(ISNULL(Valor, 0)) AS Venda " &
                                                            "FROM TB_Venda " &
                                                            "WHERE NumCaixa = @NumCaixa " &
                                                            "AND MeioPgto = 'DINHEIRO'", con)

                    strCom.Parameters.AddWithValue("@NumCaixa", txtNumCaixa.Text)

                    Dim dr As SqlDataReader
                    dr = strCom.ExecuteReader
                    dr.Read()
                    venda = dr("Venda").ToString
                    dr.Close()

                End Using

                Using strCom1 As SqlCommand = New SqlCommand("SELECT SUM(ISNULL(Valor, 0)) AS Suplemento " &
                                                            "FROM TB_SuplementoCaixa " &
                                                            "WHERE NumCaixa = @NumCaixa " &
                                                            "AND MeioPgto = 'DINHEIRO'", con)

                    strCom1.Parameters.AddWithValue("@NumCaixa", txtNumCaixa.Text)

                    Dim dr As SqlDataReader
                    dr = strCom1.ExecuteReader
                    dr.Read()
                    suplemento = dr("Suplemento").ToString
                    dr.Close()

                End Using

                Using strCom2 As SqlCommand = New SqlCommand("SELECT SUM(ISNULL(ValorPago, 0)) AS VendaPrazo " &
                                                            "FROM TB_VendaPrazo " &
                                                            "WHERE NumCaixaVenda = @NumCaixa " &
                                                            "AND MeioPgto = 'DINHEIRO'", con)

                    strCom2.Parameters.AddWithValue("@NumCaixa", txtNumCaixa.Text)

                    Dim dr As SqlDataReader
                    dr = strCom2.ExecuteReader
                    dr.Read()
                    vendaprazo = dr("VendaPrazo").ToString
                    dr.Close()

                    soma = venda + suplemento + vendaprazo
                    txtSuplDinCx.Text = soma.ToString("N", nfi)

                End Using
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        End Using

    End Sub


Se alguém puder me ajudar, a unir essas três consultas em uma só, desde já agradeço.

San Roman

"Por mais distância que a tecnologia possa encurtar, nada é mais próximo do que um abraço."
J.Pires


Resposta escolhida #487071 - 11/02/2019 16:00:40

LVFIOROT
SERRA
Cadast. em:Março/2012


se puder se em um sp, fica muito facil



#487072 - 11/02/2019 16:05:10

LVFIOROT
SERRA
Cadast. em:Março/2012


um jeito...

SELECT(
(SELECT SUM(ISNULL(Valor, 0)) AS valor
FROM TB_Venda
WHERE NumCaixa = @NumCaixa
AND MeioPgto = 'DINHEIRO')
+ (SELECT SUM(ISNULL(Valor, 0)) AS valor
FROM TB_SuplementoCaixa
WHERE NumCaixa = @NumCaixa
AND MeioPgto = 'DINHEIRO')
+ (SELECT SUM(ISNULL(ValorPago, 0)) AS valor
FROM TB_VendaPrazo
WHERE NumCaixaVenda = @NumCaixa
AND MeioPgto = 'DINHEIRO')) Valor



#487078 - 11/02/2019 17:06:20

SANROMAN
MONGAGUA
Cadast. em:Setembro/2013


Boa tarde LVFIOROT

Cara, muito obrigado, funcionou perfeitamente.
Sou novato em programação e nunca tinha visto um consulta com três tabelas com essa montagem.
Valeu.

San Roman

"Por mais distância que a tecnologia possa encurtar, nada é mais próximo do que um abraço."
J.Pires


#487083 - 11/02/2019 17:44:52

SANROMAN
MONGAGUA
Cadast. em:Setembro/2013


Estou encerrando o tópico, obrigado LVFIOROT

San Roman

"Por mais distância que a tecnologia possa encurtar, nada é mais próximo do que um abraço."
J.Pires


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por SANROMAN em 11/02/2019 17:45:26