如何根据公共 PID(即两个不同表中包含的产品 ID 列)显示盒子的总成本,即(no_of_boxes*cost_per_box)?

问题描述 投票:0回答:1

每盒成本在名为产品的表中,而盒子数量在销售表中。 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|盒子 |盒子的总成本

mysql join multiplication
1个回答
0
投票

创建表

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 |
+-------+-------------+------------+
© www.soinside.com 2019 - 2024. All rights reserved.