【问题标题】:Mysql select query count & Distinct are not working properlyMysql 选择查询计数和 Distinct 无法正常工作
【发布时间】:2022-01-05 02:52:18
【问题描述】:

我正在使用 Laravel 8 开发一个电子商务网站。我编写了以下脚本来找出单个订单号下的总价格和总数量。从以下脚本获取错误,请帮助我。
*首先我写行mysql然后我将转换laravel查询生成器。

SELECT COUNT (total_price) as totaPrice, COUNT (productqty) as proQnty
FROM (SELECT DISTINCT order_id FROM orderDetails)
LEFT JOIN ordertbl 
ON ordertbl.id = orderDetails.order_id;

【问题讨论】:

    标签: mysql laravel group-by sum left-join


    【解决方案1】:

    我猜你想对价格和数量求和,所以使用 SUM() 聚合函数。
    此外,您应该将ordertblorderDetails 进行LEFT 连接,而不是相反:

    SELECT ot.id,
           SUM(od.total_price) AS totaPrice, 
           SUM(od.productqty) AS proQnty
    FROM ordertbl ot LEFT JOIN orderDetails od
    ON ot.id = od.order_id
    WHERE ot.id = ?
    GROUP BY ot.id;
    

    或者,没有连接:

    SELECT SUM(total_price) AS totaPrice, 
           SUM(productqty) AS proQnty
    FROM orderDetails 
    WHERE order_id = ?;
    

    ? 替换为所需订单的id

    【讨论】:

      【解决方案2】:

      在您的原始中缺少子查询的表名 alis .. 您的原始查询应该是

      SELECT COUNT(total_price) as totaPrice, COUNT(productqty) as proQnty
      FROM (
          SELECT DISTINCT order_id FROM orderDetails
      ) T 
      LEFT JOIN ordertbl ON ordertbl.id = T.order_id;
      

      【讨论】:

      • 抱歉运行此脚本显示以下错误“mysql.proc 的列数错误。预期为 21,找到 20。使用 MariaDB 100108 创建,现在运行 100421。请使用 mysql_upgrade 修复此错误”跨度>
      • 答案已更新 .. 删除 count 和 ( .. 之间的空格 .. 告诉我
      • SELECT DISTINCT order_id, COUNT(total_price) as totaPrice, COUNT(productqty) as proQnty FROM orderDetails LEFT JOIN ordertbl ON ordertbl.id = orderDetails.order_id;这是正确的脚本。好好工作。我还有一个脚本想和你讨论。
      猜你喜欢
      • 1970-01-01
      • 2013-08-13
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 1970-01-01
      • 2019-08-22
      • 2016-03-06
      • 1970-01-01
      相关资源
      最近更新 更多