簡體   English   中英

MySQL GROUP BY和子查詢(IES)

[英]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,

但它仍在計數每一行。

任何建議表示贊賞。

謝謝

在以下查詢中,我將date_field分組在other_tableanother_table表中。 然后,我使用date_field加入了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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM