MySQL分组依据与子查询(ies)

MySQL分组依据与子查询(ies),mysql,Mysql,我试图计算一个日期范围内的订单数量,按日期分组,同时计算在同一日期发生的一些其他记录 我有一个类似这样的查询: SELECT order_date, DATE_FORMAT(order_date,'%W') AS day, DATE_FORMAT(order_date,'%d-%m-%Y') AS orderdate, COUNT(orderID) As orders, a.something AS something b.something AS something_else, a.s

我试图计算一个日期范围内的订单数量,按日期分组,同时计算在同一日期发生的一些其他记录

我有一个类似这样的查询:

SELECT 
order_date,
DATE_FORMAT(order_date,'%W') AS day, 
DATE_FORMAT(order_date,'%d-%m-%Y') AS orderdate, 
COUNT(orderID) As orders, 
a.something AS something
b.something AS something_else,
a.something + b.something AS total_somethings
FROM orders,
(SELECT COUNT(*) AS something FROM other_table) AS a,
(SELECT COUNT(*) AS something FROM another_table) AS b,
GROUP BY order_date 
HAVING order_date >= '2014-01-01' AND order_date <= '2014-01-31' 
ORDER BY order_date ASC
但它仍然在计算每一行

谢谢你的建议


感谢

在下面的查询中,我将日期字段分组到其他表和另一个表中。然后,我使用date_字段加入orders表。以下查询对您有用吗

SELECT 
order_date,
DATE_FORMAT(order_date,'%W') AS day, 
DATE_FORMAT(order_date,'%d-%m-%Y') AS orderdate, 
COUNT(orderID) As orders, 
a.something AS something
b.something AS something_else,
a.something + b.something AS total_somethings
FROM orders,
(SELECT date_field, COUNT(*) AS something FROM other_table GROUP BY date_field) AS a,
(SELECT date_field, COUNT(*) AS something FROM another_table GROUP BY date_field) AS b
WHERE order_date >= '2014-01-01' AND order_date <= '2014-01-31' 
AND order_date = a.date_field AND order_date = b.date_field
GROUP BY order_date 
ORDER BY order_date ASC;

如果您自己运行子查询,您是否获得了预期的计数?从另一个表格中选择COUNT*,其中日期字段=订单日期;如果我自己指定了日期,例如date_字段='2014-01-01',那么是的,我得到了特定日期的正确计数,我知道你在尝试做什么。order_date列引用orders表。但是,您不能在内联视图中访问此列。除非在另一个表中有另一个order\u date列,否则应该会出现错误。是的,当我为order\u date添加别名并尝试在子查询中使用该别名时,确实会出现错误。我想这样做了,我必须再次检查,但我觉得一切都是正确的。谢谢你的帮助。
SELECT 
order_date,
DATE_FORMAT(order_date,'%W') AS day, 
DATE_FORMAT(order_date,'%d-%m-%Y') AS orderdate, 
COUNT(orderID) As orders, 
a.something AS something
b.something AS something_else,
a.something + b.something AS total_somethings
FROM orders,
(SELECT date_field, COUNT(*) AS something FROM other_table GROUP BY date_field) AS a,
(SELECT date_field, COUNT(*) AS something FROM another_table GROUP BY date_field) AS b
WHERE order_date >= '2014-01-01' AND order_date <= '2014-01-31' 
AND order_date = a.date_field AND order_date = b.date_field
GROUP BY order_date 
ORDER BY order_date ASC;