Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.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:将“总计”计数添加到SQL查询的最后一行,仅用于唯一值_Mysql_Count_Distinct - Fatal编程技术网

MySQL:将“总计”计数添加到SQL查询的最后一行,仅用于唯一值

MySQL:将“总计”计数添加到SQL查询的最后一行,仅用于唯一值,mysql,count,distinct,Mysql,Count,Distinct,信息:服务器版本:5.1.39/MySQL/phpMyAdmin Php:5.4 服务器:Apache 代码通过以下方式运行:在phpMyAdmin或MySQL工作台中或使用自定义购物车管理器中的Server SQL Query copy&paste。 导出到:Excel.csv,然后导出到.xlsx以获取销售报告 其他:我确实使用了许多表作为参考 问题: 我想在SQL查询的底行或顶行添加一个小计。我只想计算唯一的订单号。要么作为一个整体,要么按我的日期查询 这是可行的,但将它放在一行、一列中,

信息:服务器版本:5.1.39/MySQL/phpMyAdmin Php:5.4 服务器:Apache 代码通过以下方式运行:在phpMyAdmin或MySQL工作台中或使用自定义购物车管理器中的Server SQL Query copy&paste。 导出到:Excel.csv,然后导出到.xlsx以获取销售报告 其他:我确实使用了许多表作为参考

问题: 我想在SQL查询的底行或顶行添加一个小计。我只想计算唯一的订单号。要么作为一个整体,要么按我的日期查询

这是可行的,但将它放在一行、一列中,然后就不会生成查询的其余部分

将不同的T5.U id计数为OrdUnique

返回:

OrdUnique  |  OrdID  |  ProdName  |  etc  
2342       |  21     |  Name      |  Rest of data
我想要的是:

我现有代码的基本结构是:

Select
T5.orders_id As OrdID,
T3.products_name As ProdName,   
T2.products_quantity As Qty,  

more content  
even more content (about 70 lines of query)  
ends with (similar)  

From /*PREFIX*/products T1
Left Join /*PREFIX*/orders_products T2 On (T1.products_id = T2.products_id)
Inner Join /*PREFIX*/orders T5 On (T5.orders_id = T2.orders_id)
Left Join /*PREFIX*/manufacturers T4 On (T1.manufacturers_id = T4.manufacturers_id)
Where (T5.date_purchased >= 20120101) And (T5.date_purchased <= 20131216) And T5.orders_status = x 
Order By T5.orders_id
注: 我不是通过PHP运行它,它只是从我的.sql/.txt文件复制粘贴到我的服务器后端或通过MySQL工作台

抛出表访问错误 从T5.orders中选择COUNT DISTINCT T5.orders\u id作为OrdUnique

抛出错误代码:1242:子查询返回多行 从订单组中选择COUNT DISTINCT T5.orders\u id作为OrdUnq,按订单id进行汇总, 如图所示:

这也不起作用:


提前感谢您的见解。

我知道这不是很有效,但一个简单的解决方案是使用以下查询:

    SELECT null as total,
           T5.orders_id As OrdID,
           T3.products_name As ProdName,   
           T2.products_quantity As Qty
      From /*PREFIX*/products T1
 Left Join /*PREFIX*/orders_products T2 On (T1.products_id = T2.products_id)
Inner Join /*PREFIX*/orders T5 On (T5.orders_id = T2.orders_id)
 Left Join /*PREFIX*/manufacturers T4 On (T1.manufacturers_id = T4.manufacturers_id)
     Where (T5.date_purchased >= 20120101) 
       And (T5.date_purchased <= 20131216) 
       And T5.orders_status = 'x' 
  Order By T5.orders_id
     UNION
    SELECT count(*) AS total,
           null As OrdID,
           null As ProdName,   
           null As Qty
      FROM (select T5.orders_id
              From /*PREFIX*/products T1
         Left Join /*PREFIX*/orders_products T2 On (T1.products_id = T2.products_id)
        Inner Join /*PREFIX*/orders T5 On (T5.orders_id = T2.orders_id)
         Left Join /*PREFIX*/manufacturers T4 On (T1.manufacturers_id = T4.manufacturers_id)
             Where (T5.date_purchased >= 20120101) 
               And (T5.date_purchased <= 20131216) 
               And T5.orders_status = 'x' 
          GROUP BY T5.orders_id
          ) as s

注意UNION和GROUP BY。

使用带有COUNT子句的secon查询进行UNION可以吗?UNION中的select语句需要具有相同的列数。因此,第二个查询需要修改为类似于SELECT As ORDD,As ProdName,count*As qty@Oscar谢谢。我已经复制并粘贴了,添加了我的完整连接&和,我得到了MySQL工作台错误消息:UNION和ORDER的用法不正确BY@melc这是否意味着我需要在联合后第二次复制并粘贴整个查询?@MrsAdmin只是选择部分,因为列数需要相同。已编辑,请重试?
    SELECT null as total,
           T5.orders_id As OrdID,
           T3.products_name As ProdName,   
           T2.products_quantity As Qty
      From /*PREFIX*/products T1
 Left Join /*PREFIX*/orders_products T2 On (T1.products_id = T2.products_id)
Inner Join /*PREFIX*/orders T5 On (T5.orders_id = T2.orders_id)
 Left Join /*PREFIX*/manufacturers T4 On (T1.manufacturers_id = T4.manufacturers_id)
     Where (T5.date_purchased >= 20120101) 
       And (T5.date_purchased <= 20131216) 
       And T5.orders_status = 'x' 
  Order By T5.orders_id
     UNION
    SELECT count(*) AS total,
           null As OrdID,
           null As ProdName,   
           null As Qty
      FROM (select T5.orders_id
              From /*PREFIX*/products T1
         Left Join /*PREFIX*/orders_products T2 On (T1.products_id = T2.products_id)
        Inner Join /*PREFIX*/orders T5 On (T5.orders_id = T2.orders_id)
         Left Join /*PREFIX*/manufacturers T4 On (T1.manufacturers_id = T4.manufacturers_id)
             Where (T5.date_purchased >= 20120101) 
               And (T5.date_purchased <= 20131216) 
               And T5.orders_status = 'x' 
          GROUP BY T5.orders_id
          ) as s