我试图在一个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