我在开发中碰到一个问题,主要是想让数据库来达到想要的结果,目前查询的结果为:
100 小明  1
90  小明  4
我想到达的效果是:
100 小明  1
0   小明  2
90  小明  4
0   小明  5
0   小明  6
0   小明  7
0   小明  8
0  小明   9
0  小明   10
请问如何在数据库内做到这点,最好有例子,谢谢

解决方案 »

  1.   

    假设你的查询结果为ID、XM、JE字段
    生成一个临时表,字段为
    ID:1-10
    JE:0SELECT b.id,A.XM,IF(A.JE IS NULL,B.JE,A.JE) FROM 你的查询 a right join 临时表 b on a.id=b.id
      

  2.   

    OR
    SELECT b.id,A.XM,IFNULL(A.JE,A.JE,B.JE) FROM 你的查询 a right join 临时表 b on a.id=b.id
      

  3.   

    修改:
    SELECT b.id,IFNULL(A.XM,A.XM),IFNULL(A.JE,B.JE) FROM 你的查询 a right join 临时表 b on a.id=b.id
      

  4.   

    假设临时表生成1-3天的记录,当然你要要储存过程来判断特定日期的天数
    成绩:0
    日期:1-3
    SELECT b.日期,ifnull(a.姓名,姓名),ifnull(a.成绩,b.成绩) FROM 你的查询 a left join 临时表 b
    on a.日期=b.日期
      

  5.   

    应该是RIGHT JOIN
    SELECT b.日期,ifnull(a.姓名,姓名),ifnull(a.成绩,b.成绩) FROM 你的查询 a right join 临时表 b
    on a.日期=b.日期 
      

  6.   

    呵呵,测试了一下,还要修改,
    用存储过程插入临时表1-3天的日期+成绩0+姓名(与你的工作表一致)
    再连接
    SELECT b.日期,ifnull(a.姓名,姓名),ifnull(a.成绩,b.成绩) FROM 你的查询 a right join 临时表 b
    on a.日期=b.日期 and a.姓名=b.姓名
      

  7.   

    ifnull(a.姓名,姓名)
    后面那个“姓名”是哪来的
      

  8.   

    临时表内容:
    成绩    姓名    日期
    0      小明     1
    0      小明     2
    0      小明     3
    0      红红     1
    0      红红     2
    0      红红     3
    0      哈哈     1
    0      哈哈     2
    0      哈哈     3SELECT b.日期,b.姓名,if(a.成绩>b.成绩,a.成绩,b.成绩) FROM 你的查询 a right join 临时表 b
    on a.日期=b.日期 and a.姓名=b.姓名
      

  9.   

    (就认为是统计3天内的)你一共有几个表?
    只有一个表还有还有学生表, 成绩表?[align=center]====  ====
    [/align]
      

  10.   

    (就认为是统计3天内的)如何判断3天以内? 以当前日期向前推算? 还是你指定,比如10日以前三天8,9,10 ?根据你的具体情况可以有简单的做法.
    [align=center]====  ====
    [/align]