GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Como multiplicar um elemento de uma tabela com um foreign key?

mysql
Tags: #<Tag:0x00007f1861d64dd8>

#1

gente é que eu criei uma tabela que recebe um id(pk) e um preço
ai eu criei outra com um id(pk), diaria (int) e preço_diaria
preço_diaria seria foreign key referenciando preço
e eu n to conseguidno
por favor me ajudem


#2

ela tem que ser assim porque eh de uma locadora de veiculos
ai pode ser carro
onibus
van
etc
ai fica mais facil de chamaar aquele valor fixo por determinado veiculo


#3

um pouco confuso o problema. um diagrama entidade-relacionamento ajudaria.

pelo q entendi, vc quer que a coluna “preço” da primeira tabela seja a chave estrangeira da coluna “preço_diária” da segunda tabela.

create table tabela1 (
	id serial primary key,
	preco float
);

create table tabela2 (
	id serial primary key,
	diaria int,
	preco_diaria float references tabela1(preco)
);

é importante q os tipos primitivos de ambas colunas sejam os mesmos. obs.: não sei se a solução acima roda em mysql, mas não custa tentar


#4

tem como um atributo de minha tabela receber o resultado de uma multplicação?
tipo eu armazenar ela dentro desse atributo?

vou testar aqui


#5

vc diz, por exemplo, se tiver alguma coluna “quantidade”, né?

tb não sei, mas tem que ser antes de atribuir um valor, pq UPDATE não funciona com chaves primárias/estrangeiras


#6

isso
caso eu queira por exemplo saber o valor total
por exem: tenho 10 sapatos
mas o valor unitario é de 30.00
o valor total seria 10 * 30
ai queria salvar esse valor no valor total


#7

no meu caso seria o valor da diária
multiplicado pela qntdias
esse resultado
eu queria armazenar


#8

olha, tem um jeito de fazer… mas n sei se o seu prof vai deixar. na vdd, deve ser o único jeito de fazer. caso vc tenha, na segunda tabela, uma coluna “preço total”.

create table tabela1 (
	id serial primary key,
	preco float unique
);

create table tabela2 (
	id serial primary key,
	diaria int,
	preco_total float,
	preco_diaria float references tabela1(preco)
);

/* drop table tabela1, tabela2; */

insert into tabela1(preco)
values
	(30);

insert into tabela2(diaria, preco_diaria)
values
	(10, 30);

update tabela2 set preco_total = diaria * preco_diaria;

select preco_total as "preço total" from tabela2;

mas precisa inserir o valor unitário duas vezes. aí q o bicho pega


#9

Eu vou testar aqui. Muito obrigada mesmo!


#10

nd! to disposto a ajudar