Jump to content
Fórum Script Brasil
  • 0

COMO SOMAR DOIS CAMPOS DE UMA TABELA E UM CAMPO DE OUTRA TABELA COM REGISTROS COM VALOR TOTAL MYSQL COM PHP


kleberkbj

Question

Boa noite galera!!  estou com dificuldades em conseguir o somatório de de dois campos de uma tabela e o somatório de um campo de outra tabela,

segue assim:

Tenho uma tabela chamada CID_TITULAR  e outra CID_COMPOSICAO. a tabela CID_TITULAR recebe os cadastro de um programa social e a tabela CID_COMPOSICAO o cadastros dos dependentes (filhos, parentes) TITULAR_COD = COMPOSICAO_COD_TITULAR (chave de ligação)

tenho dois campos na CID_TITULAR de valores, são eles: TITULAR_RENDA e TITULAR_RENDA_MENSAL e na outra tabela CID_COMPOSICAO tenho um campo de valor COMPOSICAO_RENDA

estão povoado assim:

 

Na tabela CID_TITULAR nos campos TITULAR_RENDA (R$ 10.00) e TITULAR_RENDA_MENSAL (R$ 10.00) e na tabela CID_COMPOSICAO no campo COMPOSICAO_RENDA tenho 3 registros com os valores R$ 300.00, R$ 200.00 e R$ 100.00

GOSTARIA QUE A SELEÇÃO FOSSE O VALOR DOS DOIS CAMPOS DA TABELA CID_TITULAR + O CAMPO DA OUTRA TABELA CID_COMPOSICAO

 

NO CASO O SOMATÓRIO CORRETO SERIA R$ 620,00

10,00 no campo TITULAR_RENDA

10,00 no campo TITULAR_RENDA_MENSAL

300,00 NO 1º REGISTRO no campo COMPOSICAO_RENDA

200,00 NO 2º REGISTRO no campo COMPOSICAO_RENDA

100,00 NO 3º REGISTRO no campo COMPOSICAO_RENDA

 

TOTALIZANDO R$ 620,00

O PROBLEMA É:

Quando faço a seleção com inner join a resposta é R$ 660,00 e não 620,00. a seleção triplica o valor da primeira tabela devido ter três registros na tabela CID_COMPOSICAO

 

TABELA CID_TITULAR

CREATE TABLE `cid_titular` (
  `titular_cod` int(11) NOT NULL AUTO_INCREMENT,
  `titular_renda` float(10,2) DEFAULT NULL,
  `titular_renda_mensal` float(10,2) DEFAULT NULL,
  PRIMARY KEY (`titular_cod`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

 

TABELA CID_COMPOSICAO

CREATE TABLE `cid_composicao` (
  `composicao_cod` int(11) NOT NULL AUTO_INCREMENT,
  `composicao_cod_titular` int(11) DEFAULT NULL,
  `composicao_renda` float(10,2) DEFAULT NULL,
  PRIMARY KEY (`composicao_cod`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

GOSTARIA MUITO DE AJUDA GALERA. OBRIGADO!!!!

 

Captura de tela de 2019-09-20 18-26-25.png

Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Tenta assim

SELECT *, (titular_renda+titular_renda_mensal+composicao_renda) AS renda_total
FROM CID_TITULAR
INNER JOIN (
  SELECT composicao_cid_titular, SUM(composicao_renda) as composicao_renda
  FROM CID_COMPOSICAO
  GROUP BY composicao_cid_titular
) as CID_COMPOSICAO ON titular_cod = composicao_cid_titular
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      148680
    • Total Posts
      644501
×
×
  • Create New...