2

わかりましたので、ここに私の問題があります。私は何年にもわたって月ごとにアルバムの数を取得しようとしています. これは私のクエリです

SELECT DATE(a.date), COUNT(a.id) 
FROM album a 
JOIN event e ON e.id = a.event_id  
WHERE  YEAR(a.date) >= 2001 
AND e.client_id = 89 
GROUP BY MONTH(a.date) 
ORDER BY a.date DESC

返される結果は

+--------------+-------------+
| DATE(a.date) | COUNT(a.id) |
+--------------+-------------+
| 2011-09-09   |          15 |
| 2011-08-26   |           9 |
| 2010-01-01   |          28 |
| 2006-03-03   |          20 |
| 2005-12-02   |          20 |
| 2005-11-11   |          15 |
| 2005-10-07   |          13 |
| 2005-07-01   |          12 |
| 2005-06-03   |           6 |
| 2005-05-06   |          18 |
| 2005-04-15   |          15 |
| 2005-02-04   |          22 |
+--------------+-------------+
12 rows in set (0.00 sec)

この結果セットには 2012 年の結果がありません。

SELECT DATE(a.date), COUNT(a.id)
FROM album a 
JOIN event e ON e.id = a.event_id 
WHERE 
YEAR(a.date) > 2005
AND e.client_id = 89 GROUP BY MONTH(a.date)
ORDER BY a.date DESC;

そして今、私は2012年を取得しましたが、2005年がありません:/誰か私にこれを説明してもらえますか?

+--------------+-------------+
| DATE(a.date) | COUNT(a.id) |
+--------------+-------------+
| 2012-06-01   |           2 |
| 2012-05-04   |          14 |
| 2012-04-06   |          13 |
| 2011-12-02   |          10 |
| 2011-11-04   |           9 |
| 2011-10-07   |          10 |
| 2011-09-09   |           9 |
| 2011-08-26   |           6 |
| 2010-01-01   |          26 |
| 2006-07-07   |           8 |
| 2006-03-03   |          19 |
| 2006-02-03   |          16 |
+--------------+-------------+
12 rows in set (0.01 sec)
4

1 に答える 1

2

グループ化されMONTHているので、すべての年間データが1つのカウントに結合されていると思います(毎回12行、毎月1行になることに注意してください)。年と月でグループ化することで修正できると思います...

GROUP BY YEAR(a.date)
GROUP BY MONTH(a.date)

(とにかく最初のケースでは、year > 2005愚かな指摘のように、2番目のケースではを呼び出しても2005年のデータを取得できません)

于 2012-07-12T13:48:05.020 に答える