【问题标题】:Sql query using joins to find sum of quantity使用连接查找数量总和的 Sql 查询
【发布时间】:2020-07-15 06:37:44
【问题描述】:

这里,在 billtran 表中 productid=1 重复了两次

我想分别找到每个productid的sum(billtran.quantity)

选择查询1:

 select name,billtran.quantity from product inner join billtran on product.id=billtran.productid where product.id in(select id from product)

【问题讨论】:

  • 然后,按产品名称分组并求和
  • 请不要使用图片。将表格和代码作为文本粘贴到此处。请求应无需任何图片即可理解。您也可以使用图像,但它们只能增强信息(例如添加的 ERM 图)。有些人甚至看不到您的图片,因为它们被屏蔽了。
  • product.id in (select id from product)?这应该做什么?确保从产品表中读取的ID存在于产品表中???这根本没有意义。

标签: mysql sql join select inner-join


【解决方案1】:

每条评论:

select name, SUM(billtran.quantity) from product inner join billtran on product.id=billtran.productid where product.id in(select id from product)
GROUP BY NAME

我在大写字母中添加的内容

注意:where product.id in(select id from product) 是一个完全没用的 where 子句,应该删除。查询不必有 where 子句,也不需要说一个表 id 应该在该表的所有 id 中(始终为真)

因此,我会把这个写成:

SELECT
  p.name,
  SUM(b.quantity) as sumof_quantity
FROM 
  product p
  INNER JOIN billtran b ON p.id=b.productid 
GROUP BY 
  p.name

【讨论】:

    【解决方案2】:

    非常简单的查询。请检查以下: select product.name,sum(billtran.quantity) from product inner join billtran on product.id=billtran.productid group by billtran.productid

    【讨论】:

      【解决方案3】:

      首先你要根据product_id得到数量的总和

      SELECT  product.name, SUM(billtran.quantity) AS value_sum 
          FROM billtran inner join product on product.id= billtran.product_id where product.id in(select id from product ) 
          GROUP BY product_id;
      

      这将是结果:

      name    quantity
      abc      6
      xyz      1
      pqt      3
      

      您也可以通过对product.name 进行分组来获得相同的结果:

      SELECT  product.name, SUM(billtran.quantity) AS value_sum 
      FROM billtran inner join product on product.id=billtran.product_id where product.id in(select id from product) 
      GROUP BY  product.name;
      

      【讨论】:

      • 您的顶级查询之所以有效,是因为它会自动为每个 ID 选择一个随机产品名称;其他企业级数据库(以及 ONLY_FULL_GROUP_BY 模式下的 mysql)不会接受它
      猜你喜欢
      • 2018-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多