首页 > 解决方案 > 如何计算并将值插入表中,但计算取决于来自不同表的数据?

问题描述

示例:我有三张桌子 car,payment,rental

CREATE TABLE car(
    car_id INTEGER NOT NULL PRIMARY KEY,
    price_per_day REAL NOT NULL,
);

CREATE TABLE payment(
    payment_id INTEGER NOT NULL PRIMARY KEY,
    rental_id INTEGER NOT NULL,
    payment_amount REAL NOT NULL,
);

CREATE TABLE rental(
    rental_id INTEGER NOT NULL PRIMARY KEY,
    rental_time VARCHAR(15) NOT NULL, --timestamp values    
    car_id INTEGER NOT NULL, 
);

我想计算payment_amount,但必须从另一个表中准确获取该数据,必须从rental表中获取rental_time(天)并乘以另一个表(car )中的price_per_day,但必须准确地获取该价格(它是关于car_id)并插入到payment_amount列的支付表中。

我试过

UPDATE payment
    SET p.payment_amount = (SELECT r.rental_time WHERE r.car_id=1)*(SELECT c.price_per_day WHERE c.car_id=1)
        FROM payment p, rental r, car c;

错误:运算符不存在:字符变化 * 真实

第 2 行:...((SELECT r.rental_time WHERE r.car_id=1)*(SELECT c...

走着瞧吧

如果它应该根据 car_id 和不同的价格 (price_per_day) 而变化,为什么列数据相同?

标签: sqldatabasepostgresql

解决方案


在此处输入图像描述我只想加入 3 张桌子。

UPDATE payment
  SET 
      payment_amount =
(
    SELECT(r.rental_time * c.price_per_day) AS payment_amount
    FROM car c
         JOIN rental r ON c.car_id = r.car_id
         JOIN payment p ON p.rental_id = r.rental_id
    WHERE c.car_id = 1
);

推荐阅读