每盒成本在名为产品的表中,而盒子数量在销售表中。 PID 在两个表中都很常见,都位于相同的架构和数据库中。我想要根据 PID(产品 ID)显示每个 PID 的盒子总成本。 PID 是主键。
我正在尝试这个,但它作为语法不起作用
选择 s.PID, pr.Boxes, (s.Boxes*pr.Cost_per_box) AS Total_Cost_of_Boxes 加盟产品公关 上 pr.PID = s.PID;
我是初学者,所以请原谅语法中的任何愚蠢之处,请为我提供正确的语法。还有一件事 pr.cost_per_box 是 FLOAT,而 s.Boxes 是 NUMERIC。公关。代表产品表和s。代表销售表。我已经预先传递了语法 SELECT * from sales;并从产品中选择*; .
选择 s.PID、pr.Boxes、(s.Boxes*pr.Cost_per_box) 作为 Total_Cost_of_Boxes 加盟产品公关 上 pr.PID = s.PID;
期待我详细提到的内容。 PID|盒子 |盒子的总成本
创建表
CREATE TABLE sales (
id INTEGER PRIMARY KEY,
product_id INTEGER NOT NULL,
boxes numeric NOT NULL
);
CREATE TABLE products (
id INTEGER PRIMARY KEY,
name varchar(255) NOT NULL,
price_for_box FLOAT NOT NULL
);
然后添加数据
INSERT INTO products VALUES (1, 'chair', 10.5);
INSERT INTO products VALUES (2, 'table', 22);
INSERT INTO products VALUES (3, 'bed', 100);
INSERT INTO sales VALUES (1, 1, 4);
INSERT INTO sales VALUES (2, 1, 5);
INSERT INTO sales VALUES (3, 2, 5);
INSERT INTO sales VALUES (4, 3, 100);
现在您选择带有连接的数据,请记住使用“from”
SELECT
p.name,
SUM(s.boxes) as 'total_boxes',
SUM(s.boxes) * p.price_for_box as 'total_cost'
from products p
left join sales s on s.product_id = p.id
group by
p.id;
结果
+-------+-------------+------------+
| name | total_boxes | total_cost |
+-------+-------------+------------+
| chair | 9 | 94.5 |
| table | 5 | 110 |
| bed | 100 | 10000 |
+-------+-------------+------------+