我試圖在一個SQL查詢中收集統計數據,以方便日期在聯合中自動排序。它實際上只有一個表格,但我想要統計不同的數據。MySQL - 聯盟還是加入?
我的表看起來是這樣的:
ID In Wanted
441 2011-03-14 0
439 2011-03-14 1
442 2011-03-14 0
428 2011-03-13 1
431 2011-03-13 1
425 2011-03-11 0
423 2011-03-11 1
420 2011-03-09 1
我親近與此查詢所期望的結果:
SELECT * FROM
(
(SELECT date(In) n, count(date(In)) cntw, null cntl FROM items i WHERE Wanted=1 group by date(In))
union all
(SELECT date(In) n, null cntw, count(date(In)) cntl FROM items i WHERE Wanted=0 group by date(In))
) Serie
Order by n DESC
但一位接近不夠緊密:d結果我得到的是這樣的:
n cntw cntl
2011-03-14 null 2
2011-03-14 1 null
2011-03-13 2 null
2011-03-11 null 1
2011-03-11 1 null
2011-03-09 1 null
我想要的是「混合」結果在同一行上,按日期:
n cntw cntl
2011-03-14 1 2
2011-03-13 2 null
2011-03-11 1 1
2011-03-09 1 null
正如你所看到的,每個日期只有一行。 其實最完美的結果將是,即使缺少的日期在那裏了:
n cntw cntl
2011-03-14 1 2
2011-03-13 2 null
2011-03-12 null null
2011-03-11 1 1
2011-03-10 null null
2011-03-09 1 null
...但我想這是不可能的。
謝謝!
你應該避免在你的字段名稱中使用MySQL關鍵字(我的意思是「In」字段)。關於問題:不可能以某種方式使用「GROUP BY」? – galymzhan 2011-03-14 15:06:55
嗯,名字實際上是'CheckIn',表格比我在這裏展示的要複雜得多,我在我的例子中縮短了它。 – 2011-03-16 00:34:25