Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL在一个表中分组,并与另一个表中的数字相乘_Mysql - Fatal编程技术网

MYSQL在一个表中分组,并与另一个表中的数字相乘

MYSQL在一个表中分组,并与另一个表中的数字相乘,mysql,Mysql,我有两个表格如下: 货物在: in_id|pid|in_num|in_date 1 1001 10 2020-06-28 2 1002 20 2020-06-28 3 1001 20 2020-05-25 ...... 股票: stock_id|pid|num|price 1 1001 10 5 2 1002 15 6 3 1003 20 7 ... “货物”表存储所有货物入库的记录,该表中

我有两个表格如下: 货物在:

in_id|pid|in_num|in_date
1     1001 10    2020-06-28
2     1002 20    2020-06-28
3     1001 20    2020-05-25
......
股票:

stock_id|pid|num|price
 1      1001   10   5
 2      1002   15   6
 3      1003   20   7
...
“货物”表存储所有货物入库的记录,该表中的pid与表“库存”中的pid相同,表“库存”是产品参考代码。在“货物”表中,每个产品都有多条记录。 “库存”表存储我们持有的所有SKU、当前库存水平以及产品成本。 我想做的是:

  • 根据pid和日期(年+月)从“货物”中分组,这样我可以得到每个月预订的货物总数
  • 带有股票价格的多个小计
  • 获取上面的总数量,类似于excel中的SUMPRODUCT
  • 导出到html表格或excel
  • 我已经尝试了SO关于GROUPBY/ROLLUP/JOIN的几个答案,但显然我并没有按照预期做对。如果我只是在“goods_in”表中添加一个cost列,我可以简化这个过程,但这会使它变得不整洁

    我仍然在学习MYSQL,如果你们觉得这很简单,请原谅我

    谢谢


    肯很难确定你想要什么,但听起来像这样:

    select
        pid,
        year(in_date) as year,
        month(in_date) as month,
        sum(goods_in.in_num * stock.price)
    from goods_in
    join stock using (pid)
    group by pid, year, month
    

    要导出到html或excel,最好单独问一个问题。

    给定示例数据,您希望得到什么样的输出?你没有说你想要什么字段,或者你所说的TotalThank@ysth是什么意思,我已经编辑了更新,希望能让它更清楚。那么每个pid、月份以及该pid/月份的所有价格*的总和?让你展示你想要的东西比猜测到目前为止你尝试了什么SQL语句要容易得多,而结果又不是你想要的呢?@kmoser我试过按pid选择pid,SUM(stock.price*num)作为分组中商品的总计,显然这句话中的“num”不正确。谢谢你的及时回复。这几乎是我想要的,只是价格不在表中。我还需要按年份分组,这样我们就不会得到不同年份的同一个月。数据导出很好,我可以处理。是的,价格不在货物中;这就是为什么它需要加入股票市场。我的“月”包括年。但是我会把它更新得更清楚谢谢你@ysth,我会让它运行一下,让你知道它是如何运行的。根据你的解决方案来解决它,谢谢you@ysth@戈迪纳尔如果对你有效,你能投票支持我的答案吗?