我试图计算日期范围内的订单数量,按日期分组,但也计算在同一日期发生的其他一些记录。MySQL GROUP BY with subquery(ies)
我有一个查询看起来是这样的:
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
它的工作原理确定,但很明显,子查询计算每一行。表'other_table'和'another_table'都有日期字段,我想用它来限制每行的结果。
我试图改变子查询是这样的:
(SELECT COUNT(*) AS something FROM other_table WHERE date_field = order_date) AS a,
,但它仍然是计算每一行。
任何意见赞赏。
感谢
如果你自己运行子查询,你会得到预期的计数吗? SELECT COUNT(*)AS FROM other_table WHERE date_field = order_date; –
如果我自己指定日期,例如WHERE date_field ='2014-01-01',那么是的,我会得到该日期的正确计数。 – Dan
我明白你想要做什么。 order_date列是指订单表。但是,您不能在“内联视图”中访问此列。除非other_table中有另一个order_date列,否则应该会出现错误。 –