fbpost と fbalbum という 2 つのテーブルがあり、それぞれに というDATETIME
列がありますcreatedTime
。月ごとのアルバム数と月ごとの投稿数を求めて、それらを足し合わせています。
これが私のクエリです(説明どおりに機能します):
SELECT createdTime, itemCount FROM
(SELECT DATE_FORMAT(createdTime, '%m-%Y') AS createdTime, COUNT(*) AS itemCount FROM fbpost WHERE page_id =2
GROUP BY YEAR(createdTime), MONTH(createdTime)
UNION ALL
SELECT DATE_FORMAT(createdTime, '%m-%Y') AS createdTime, COUNT(*) AS itemCount FROM fbalbum WHERE page_id=2
GROUP BY YEAR(createdTime), MONTH(createdTime)) AS foo
GROUP BY createdTime
これにより、次の結果が得られます。
01-2009 | 173
01-2010 | 21
01-2011 | 521
01-2012 | 776
02-2009 | 117
02-2010 | 158
02-2011 | 678
...
しかし、結果を次のように並べたいと思います。
01-2009 | 173
02-2009 | 56
03-2009 | 543
04-2009 | 211
05-2009 | 723
06-2009 | 55
07-2009 | 521
...
どうすればこれを達成できますか?
注: DATE_FORMAT()
ではなく文字列を指定するDATETIME
ため、日付で並べ替えることはできません。DATE_FORMAT()
しかし、ネストされた 2 つの select ステートメントを取り出すと、ほとんどの月で 2 つの行が得られます。ネストされた select ごとに 1 か月に 1 行しかありませんが、月の最後の項目は任意の日になる可能性があるため、通常は日が異なります。