SLECT SUM INNER JOIN GROUP BY

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

SLECT SUM INNER JOIN GROUP BY

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#479093 - 13/01/2018 15:05:08

ADILSOO
PRATANIA
Cadast. em:Março/2012


Boa tarde pessoal!
Estou tentando somar as quantidades dos produtos utilizados em vários lançamentos, eu até consigo pegar os produtos que foram utilizados, poderia até sair verificando item a item no banco, mas isso iria demorar séculos, gostaria da ajuda dos senhores, para colocar o sum junto com o inner join, estou tentando da seguinte forma...

sSQL = "SELECT codaptrator, data Sum(qtdeprod) as xQtdeProd FROM tabaptrator INNER JOIN tabapprod ON tabapprod.codaptrator = tabaptrator.codaptrator INNER JOIN tabcadmateriais ON tabcadmateriais.codmaterial = tabapprod.codprod WHERE data >= '" & Format(txtdtini.Text, "yyyy/mm/dd") & "' and data <= '" & Format(txtdtfim.Text, "yyyy/mm/dd") & "' Group By codprod"
Set rs = Conexao.Execute(sSQL)


Lembrando que o campo qtdeprod está na tabela tabapprod

Só que não to sabendo ao certo, onde colocar o sum...

O importante não é oque você sabe hoje, e sim o quanto você pode evoluir amanhã!
Meu Skype: adilson.skype1


#479094 - 13/01/2018 17:17:23

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Qual a estrutura das tabelas?

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#479095 - 13/01/2018 17:26:54

ADILSOO
PRATANIA
Cadast. em:Março/2012


   tabcadmateriais` (
  `codmaterial` int(11) NOT NULL AUTO_INCREMENT,
  `codext` int(11) DEFAULT NULL,
  `nomematerial` varchar(255) DEFAULT NULL,
  `unid` varchar(255) DEFAULT NULL,
  `codgrupo` int(11) DEFAULT NULL,
  `manutencao` varchar(255) DEFAULT NULL,
  `valor` double(10,2) DEFAULT NULL,
  `aplicacao` varchar(255) DEFAULT NULL,
  `qtdeestoque` double(10,2) DEFAULT NULL,
  `codfabricante` varchar(255) DEFAULT NULL,
  `codnomefabricante` int(11) DEFAULT NULL,
  `codclasse` int(11) DEFAULT NULL,
  `codgrupoquimico` int(11) DEFAULT NULL,
  `codativo` int(11) DEFAULT NULL,
  `codpraga` int(11) DEFAULT NULL,
  `situacao` varchar(255) DEFAULT NULL,
  `concentracao` varchar(255) DEFAULT '0' COMMENT '0',
  `codtipoacao` int(11) DEFAULT '0',
  `codformulacao` int(11) DEFAULT '0',
  `linkbula` varchar(255) DEFAULT NULL,
  `codempmateriais` int(11) DEFAULT NULL,
  `doseprod` double(10,2) DEFAULT NULL,
  `mlprod` int(11) DEFAULT NULL,
  `mlm3` double(10,2) DEFAULT '0.00',
  `calcativom3` varchar(255) DEFAULT NULL,
  `mlprodm3` double(10,3) DEFAULT '0.000',
  `limitarprod` varchar(255) DEFAULT NULL,
  `dosemax` double(10,3) DEFAULT '0.000',
  `ltsbb` int(11) DEFAULT '0',
  `tipocalcdose` double(10,3) DEFAULT '0.000',
  `tipocalc` varchar(255) DEFAULT 'PADRAO',
  `tipocalcltsbb` int(11) DEFAULT '0',
  PRIMARY KEY (`codmaterial`)
) ENGINE=InnoDB AUTO_INCREMENT=776 DEFAULT CHARSET=latin1

tabapprod` (
  `codaptrator` int(11) DEFAULT '0',
  `codprod` int(11) DEFAULT '0',
  `doseprod` double(10,3) DEFAULT '0.000',
  `qtdeprod` double(20,3) DEFAULT '0.000',
  `unitprod` double(10,2) DEFAULT '0.00',
  `totalprod` double(10,2) DEFAULT '0.00',
  `codemp` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1

`tabaptrator` (
  `codaptrator` int(11) NOT NULL DEFAULT '0',
  `data` date DEFAULT NULL,
  `codfaz` int(11) DEFAULT '0',
  `codfunc` int(11) DEFAULT '0',
  `codtrator` int(11) DEFAULT '0',
  `codimp` int(11) DEFAULT '0',
  `horiini` int(11) DEFAULT '0',
  `horifim` int(11) NOT NULL DEFAULT '0',
  `horaini` time DEFAULT '00:00:00',
  `horafim` time DEFAULT '00:00:00',
  `codpreparo` int(11) DEFAULT '0',
  `obs` varchar(255) DEFAULT '0',
  `codemp` int(11) DEFAULT NULL,
  `codturma` int(11) DEFAULT NULL,
  `almoco` varchar(255) DEFAULT NULL,
  `horaextra` varchar(255) DEFAULT NULL,
  `turno` varchar(255) DEFAULT NULL,
  `continuacao` varchar(255) DEFAULT 'N',
  PRIMARY KEY (`codaptrator`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

O importante não é oque você sabe hoje, e sim o quanto você pode evoluir amanhã!
Meu Skype: adilson.skype1


Resposta escolhida #479098 - 13/01/2018 21:25:52

ALVAROVB2009
GUARULHOS
Cadast. em:Maio/2009


Segue um comando que uso para trazer uma soma por associado, no meu caso, más acredito que seja a mesma coisa que vc precisa

    StrSql = "SELECT distinct(a.nomeassociado), sum(a.valormensalidade) as total, a.codassociado,"
    StrSql = StrSql & "a.bairroassociado,a.endassociado,a.cidadeassociado,a.estadoassociado,a.cepassociado,a.matricula "
    StrSql = StrSql & "from tbmensalidadeassociadoparticular M "
    StrSql = StrSql & "inner join tbassociadoparticular a on a.codassociado = m.codassociado "
    StrSql = StrSql & "Where a.ativo = 1 "
    StrSql = StrSql & "and isnull(datapagamento) "
    StrSql = StrSql & "and datavencimento between #" & Format(txtDtInicio.Text, "MM/DD/YYYY") & "# and #" & Format(txtDtFim.Text, "MM/DD/YYYY") & "# "
    If Trim(TxtDescricao.Text) <> "" Then StrSql = StrSql & "and nomeassociado like '" & TxtDescricao.Text & "%' "
    StrSql = StrSql & "group by nomeassociado, a.valormensalidade,a.bairroassociado,a.endassociado,a.cidadeassociado,a.estadoassociado,a.cepassociado,a.matricula,a.codassociado "
    StrSql = StrSql & "order by a.nomeassociado"


sSQL = "SELECT codaptrator, data Sum(qtdeprod) as xQtdeProd FROM tabaptrator
O que seria essa data antes do Sum??
Nesse caso esta errado o seu comando

O seu banco é mysql, pelo código que vc postou, más o meu código continua servindo, basta não levar em conta a consulta pelas datas ok?!

Qqer coisa da um toque ai

Teoria é quando se sabe tudo, e nada funciona. Prática e quando tudo funciona e ninguém sabe porque.
"Aquele que quer aprender gosta que lhe digam quando esta errado;
só o tolo não gosta de ser corrigido -"Prov.12:1

#479104 - 14/01/2018 09:17:56

ADILSOO
PRATANIA
Cadast. em:Março/2012


Hum, pelo que entendi você faz tudo separado e depois junta? Nunca tinha feito dessa maneira. Vou tentar.

codaptrator, data, campos usados da tabela tabapprod e Sum(qtdeprod) as xQtdeProd é onde eu pretendo somar o campo qtdeprod da tabela tapapprod, mas não está dando certo pois não sei se é ali mesmo que tenho que colocar, pois um SELECT * FROM não deu certo também.

O importante não é oque você sabe hoje, e sim o quanto você pode evoluir amanhã!
Meu Skype: adilson.skype1


#479107 - 14/01/2018 12:52:31

ALVAROVB2009
GUARULHOS
Cadast. em:Maio/2009


Realmente o select * from não funciona, pois o comando SUM tem que saber qual é o campo que ele vai somar
Por isso que no meu comando, todos os campos estão selecionados e não um *

Quanto ao que vc falou que eu faço tudo separado, não faço , esta tudo dentro da mesma string
Aqui o SUM esta somando o valor das mensalidades do meu associado
SELECT distinct(a.nomeassociado), sum(a.valormensalidade) as total, a.codassociado,"
    StrSql = StrSql & "a.bairroassociado,a.endassociado,a.cidadeassociado,a.estadoassociado,a.cepassociado,a.matricula "
    StrSql = StrSql & "from tbmensalidadeassociadoparticular M

E depois eu agrupo
StrSql = StrSql & "group by nomeassociado, a.valormensalidade,a.bairroassociado,a.endassociado,a.cidadeassociado,a.estadoassociado,a.cepassociado,a.matricula,a.codassociado "

E depois ordeno
StrSql = StrSql & "order by a.nomeassociado"


O que eu coloquei embaixo foi o trecho da sua string onde acho que o problema pode estar
sSQL = "SELECT codaptrator, data Sum(qtdeprod) as xQtdeProd FROM tabaptrator
O que seria essa data antes do Sum??
Nesse caso esta errado o seu comando

deve estar faltando uma vírgula depois do DATA, pois logo na sequencia esta vindo o SUM

Teoria é quando se sabe tudo, e nada funciona. Prática e quando tudo funciona e ninguém sabe porque.
"Aquele que quer aprender gosta que lhe digam quando esta errado;
só o tolo não gosta de ser corrigido -"Prov.12:1

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


Tópico encerrado, respostas não sao permitidas
Encerrado por ADILSOO em 19/01/2018 12:05:56