mysql数据库
有两个字段,count,inputtime
count是int类型,
inputtime是date类型,
想查starttime至endtime这段时间的count数据,
如果有,则显示count的数据,如果没有,就为0,请为怎么做?
比如当starttime='2010-08-01',endtime='2010-08-03',2010-08-01有数据,2010-08-02没数据,2010-08-03有数据怎么写sql语句才能显示22 2010-08-01
0 2010-08-02
33 2010-08-03

解决方案 »

  1.   

    DROP TABLE IF EXISTS `test`;
    CREATE TABLE `test` (
      `id` int(11) NOT NULL,
      `count` int(11) DEFAULT NULL,
      `inputtime` date DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    建表语句在上面
      

  2.   

    第一种方法,在创建表的时候设置个默认值。即:
    CREATE TABLE IF NOT EXISTS `test` (
      `id` int(11) NOT NULL,
      `count` int(11) default '0',
      `inputtime` date default NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    这样如果没有数据自动填充0.
    第二种方法:用sql 的case语句实现
    SELECT CASE WHEN count is null THEN '0' else count END as count,inputtime FROM `test` ps:日志http://www.telnote.cn 
      

  3.   


    1.用辅助表是可以 我是想不用辅助表
    2.我用了你第二个语句,还是不行呢 
    SELECT CASE WHEN count is null THEN '0' else count END as count,inputtime FROM `test` where inputtime >='2010-08-14' and  inputtime <='2010-08-25'得到的结果是这样的
    1 2010-08-18
    2 2010-08-17
    4 2010-08-18
    6 2010-08-14
    4 2010-08-15
    3 2010-08-16
    没有 19号之后的数据呢 可能你没理解我的意思 我是想即使没有19号的数据,也要列出来,为零即可
      

  4.   


    你这种效果用sql语句好像实现不了,应该要借助程序