Problema em somar

Tenho duas tabelas km com id, quilometro; e kmsoma com id , quilometros, total;

Quero somar quilometro + quilometros e colocar na coluna total o resultado.

CREATE TABLE km (
id SERIAL PRIMARY KEY NOT NULL,
quilometro INT NOT NULL

);

CREATE TABLE kmsoma (
id SERIAL PRIMARY KEY NOT NULL,
quilometros INT NOT NULL,
km INTEGER,
total INTEGER,
FOREIGN KEY(km) REFERENCES km (id)

);

sou iniciante to vários dias tentando e não consigo

Bom dia, consegue colocar a estrutura das tabelas? para tentar perceber.

editei com colocando a tabelas

Existem várias formas, pode fazer o select assim.

select a.id, a.quilometros, a.km, (a.quilometros + b.quilometro) as total from kmsoma a
INNER JOIN km b on b.id = a.km

notas: onde se encontra (a.quilometros + b.quilometro) as total, (total) passa a ser um alias da soma no parêntesis
Onde se encontra o kmsoma a, (a) passa a ser um alias da tabela kmsoma,
Onde se encontra o km b, (b) passa a ser um alias da tabela km
Onde se encontra INNER JOIN, junta a tabela km, onde a coluna km.id é igual á coluna kmsoma.km, que é a chave estrangeira.

ate ai consegui chegar no select só que queria armazenar o resultado na coluna total. porque quero depois multiplicar esse valor diminuir dividir . comecei pesquisar como fazer com trigger penando ainda nisso.

Não sei qual é o objetivo, no entanto se for fazer um insert na tabela kmsoma, pode somar o km da coluna quilometro inserindo o valor no total.
Ou seja 20 é o valor de quilómetros + e faz um select da outra tabela (km )referenciado o id da coluna km.quilometro que quer somar.

insert into kmsoma ( id, quilometros, km, total) values (1,20, 1, (20+(select km.quilometro from km where id=1))) ;

No caso a tabela kmsoma já está preenchida e vc só quer atualizar a coluna total com a soma, correto?

Se for isso, daria para fazer assim:

UPDATE kmsoma
SET total = km.quilometro + kmsoma.quilometros
FROM km WHERE km.id = kmsoma.km;

valeu muito obrigado solucionaram meu problema

1 curtida

valeu muito obrigado solucionarão meu problema

1 curtida