【问题标题】:SQL multiple and get the sum of different joined tables [duplicate]SQL多个并获取不同连接表的总和[重复]
【发布时间】:2021-05-21 01:25:03
【问题描述】:

我需要使用 MySQL 查询从实际价值价格和出货量以及订单数量中获取订单的利润。

请帮助使用连接查询查找结果。订单表是订单数据的主表,库存表是我们的价格。运费用于计算订单运费

为了查看价格细节,我们需要得到我们的价格和用户订购的数量以及运费

表:order-列出订单数据的主表

order_id name order_amount TOTAL
125 Sunil 125 128
126 Kurian 225 129

表格:order_item - 单个订单商品详情

order_id product_id quantity TOTAL
125 12 2
125 13 1

表:库存(个别产品实际价格)

product_id price itemcode
12 30 IKJH
13 40 JUSWK

shipping_table 运费。因为有机会在多个表格中添加相同金额的运费。我只需要一个订单的一个值

order_id charge itemcode
125 5 IKJH
125 5 IKJH

预期输出

order_id order_price actual_price
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

【问题讨论】:

  • 显示示例数据的所需输出。

标签: mysql sql join inner-join


【解决方案1】:

您可以在此连接内创建一个虚拟表。

你可以试试这样的。

请检查由于此处使用的虚拟表的性质而可能出现的任何性能问题。你可以在mysql中使用EXPLAIN ANALYZE命令来检查性能问题

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

【讨论】:

    猜你喜欢
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 2022-10-01
    • 2021-06-17
    相关资源
    最近更新 更多