Montar um SELECT com SUM e JOIN

4 respostas
A

Oi,

Estou com dificuldade para montar um SELECT para recuperar uma soma (SUN) de um campo de uma tabela MySQL.

Tenho duas tabelas com a mesma chave, conforme abaixo:

Tabela 1
Layout ==> {chave1, chave2, flag_soma}

Tabela 2
Layout ==> {chave1, chave2, valor}

Na tabela 1 o tenho o campo valor que deve ser somado e na tabela 2 o campo que informa se o valor entra ou não entra (S/N) na soma.

Ex.:

Linhas da Tabela 1

{01, 34, 1.00}

{01, 38, 3.00}

{01, 45, 2.30}

{01, 53, 2.50}

{01, 76, 1.60}
Linhas da Tabela 2

{01, 34, ‘S’}

{01, 38, ‘S’}

{01, 45, ‘N’}

{01, 53, ‘S’}

{01, 76, ‘N’}

Resultado esperado: somatório = 6.50

Só devo somar, neste exemplo, as linhas 1, 2 e 4 da tabela 1, pois são as linhas com o campo flag_soma = "S" na tabela2.

Alguém pode me ajudar a montar este select?

Grato.

4 Respostas

A

Pessoal,

Montei o seguinte SELECT:

comandoSQL1 = “SELECT SUM(Tabela1.Valor) as xxxxx FROM Tabela1 as T1, Tabela2 as T2 WHERE T1.Chave0 = " + Cod_Usuario + " AND T1.Chave1 = ‘1’ AND T2.Chave1 = ‘1’ AND T1.Chave2 = T2.Chave2 AND T2.Flag_soma = ‘S’”;

O problema é que está dando o seguinte erro: null, message from server: “Unknown column ‘Tabela1.Valor’ in ‘field list’”

Alguém saba me dizer qual é o erro?

O campo (coluna) Valor existe na tabela 1.

Grato

claudiom

na verdade o que não existe é a Tabela1.

você utilizou um alias no seu select para tratar a tabela 1: T1

qualquer referência a esta tabela tem de ser feita utilizando este alias.

outra coisa, por que estes valores estão fixos?

e não

?

A

Claudio,

Perfeito! Era esse mesmo o erro. Eu corrigi e funcionou.

Estrou tratando a chave 1 com valores fixos por que esta chave aponta para lancamentos de débito (= 1) e crédito (= 2) e, neste acesso eu quero acessar apenas os lançamentos de débtio.

Porém, sua dica me deu uma excelente idéia. Posso usar "T1.Chave1 = T2.Chave1 " para pegar logo os somatórios dos lançamentos de débitos e créditos.
Só preciso pesquisar como receber esses dois somatórios sepradamente.

Se você tiver uma dica, me passe!?!?!?!?!?

Valeu, obrigado pela ajuda.

claudiom

GROUP BY

Criado 22 de junho de 2010
Ultima resposta 22 de jun. de 2010
Respostas 4
Participantes 2