mysql - SQL多并获取不同连接表的总和
问题描述
我需要使用 MySQL 查询从实际价值价格和出货量以及订单数量中获取订单的利润。
请帮助使用连接查询查找结果。订单表是订单数据的主表,库存表是我们的价格。运费用于计算订单运费
为了查看价格详细信息,我们需要获取我们的价格和用户订购数量以及运费的总和
表:order-列出订单数据的主表
order_id | 姓名 | 订单金额 | 全部的 |
---|---|---|---|
125 | 苏尼尔 | 125 | 128 |
126 | 库里安 | 225 | 129 |
表:order_item - 单个订单商品详情
order_id | product_id | 数量 | 全部的 |
---|---|---|---|
125 | 12 | 2 | |
125 | 13 | 1 |
表:库存(个别产品实际价格)
product_id | 价格 | 项目代码 |
---|---|---|
12 | 30 | 宜家 |
13 | 40 | JUSWK |
shipping_table 运费。因为有机会在多个表格中添加相同金额的运费。我只需要一个订单的一个值
order_id | 收费 | 项目代码 |
---|---|---|
125 | 5 | 宜家 |
125 | 5 | 宜家 |
预期产出
order_id | 订单价格 | 实际价格 |
---|---|---|
125 | 125 | 105 |
我尝试了以下查询,但结果错误。
SELECT a.created_on ,
a.order_id,
a.order_amount,
sum(c.price*b.quantity),
FROM `order` AS `a`
INNER JOIN `order_item` AS `b` ON `a`.`order_id` = `b`.`order_id`
INNER JOIN `inventory` AS `c` ON `b`.`product_id` = `c`.`product_id`
INNER JOIN shipping_table
AS d
ON d
。order_id
= a
。order_id
在哪里a
。order_id
= 125 GROUP BY a.order_id ORDER BY a.order_id
解决方案
您可以在此连接内创建一个虚拟表。
你可以尝试这样的事情。
请检查由于此处使用的虚拟表的性质而可能出现的任何性能问题。您可以使用EXPLAIN ANALYZE
mysql 中的命令来检查性能问题
SELECT a.order_id, ordertot.tot
FROM order a JOIN
(SELECT order_id, SUM(order_item.quantity * inventory.price) AS tot FROM order_item JOIN inventory ON order_item.product_id = inventory.product_id GROUP BY order_id) AS ordertot
ON a.order_id = ordertot.order_id
推荐阅读
- javascript - 无法将嵌套对象转换为对象数组,反之亦然
- excel - 嵌入固定范围的图片
- java - “java.lang.IllegalArgumentException:比较方法违反了它的一般约定!” 比较时
- python - 我不明白为什么这种线程情况不起作用
- typescript - Typescript 中的模块级泛型类型
- db2 - 从客户端调用 DB2 外部存储过程失败并显示 CPF9810
- javascript - ApexCharts Stacked Columns 系列特定颜色
- ansible - 无法在 Ansible lineinfile 模块中的变量之间添加字符串
- unix - unix 在 aix 上找到具有一定深度的
- java - 等待写入完成后如何关闭 BufferedWriter