MySQL:将“总计”计数添加到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 返回: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查询的底行或顶行添加一个小计。我只想计算唯一的订单号。要么作为一个整体,要么按我的日期查询 这是可行的,但将它放在一行、一列中,
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