数据库中有一条记录。怎么一下查出三条来?当然有一列人为加上去区分不同。需求是这样的:
有个任务表,任务可能是本周完成。比如从10.3到10.9号。网面上显示三列:昨天,今天,明天的任务。如果今天是10.6号。此任务应该出现在10.5,10.6,10.7的任务列表中。所以想一下选择出三列,直接放在任务列表中好了,而不要在页面上进行判断。---------------------------------------------------
10.5 | 10.6 | 10.7
---------------------------------------------------
任务名称1 | 任务名称1 | 任务名称1
---------------------------------------------------
任务名称2 | 任务名称3 | 任务名称4
---------------------------------------------------不知道表述清楚没~
有个任务表,任务可能是本周完成。比如从10.3到10.9号。网面上显示三列:昨天,今天,明天的任务。如果今天是10.6号。此任务应该出现在10.5,10.6,10.7的任务列表中。所以想一下选择出三列,直接放在任务列表中好了,而不要在页面上进行判断。---------------------------------------------------
10.5 | 10.6 | 10.7
---------------------------------------------------
任务名称1 | 任务名称1 | 任务名称1
---------------------------------------------------
任务名称2 | 任务名称3 | 任务名称4
---------------------------------------------------不知道表述清楚没~
from tb
where dateT between date_add('2010-10-10', interval -1 day)
and date_add('2010-10-10', interval 1 day);
Task表:
ID,Title,type,Completdate
-------------------------
1,任务1,2,2010-10-11
2,任务2,3,2010-10-11
3,任务3,1,2010-10-11
----------------------------
Type:1表示当天。2表示本周完成,3表示本月完成。传入参数2010-10-12,需要显示,2010.10.11,2010.10.12,2010.10.13,三天每天所有任务。
即:
2010.10.11 任务1
2010.10.11 任务2
2010-10-11 任务3
2010.10.12 任务1
2010.10.12 任务2
2010.10.13 任务1
2010.10.13 任务2
我估计这个要写存储过程,因为TYPE=2,它的纪录就是有7条,TYPE=3,它的纪录就是有当前月的天数条,
而输入的当前天数,昨天和后天,都要一一进行匹配,然后输出纪录。
这个涉及到周和月份的操作,等待斑竹来解决,我想了好久,写不出来。
where 日期 between curdate()-interval 1 day and curdate()+interval 1 day
order by 日期分三列显示建议在程序中实现,而不是用SQL语句实现。
我现在有两种解决方案:
1.加个临时表,加三行日期记录,inner join 查询一下。
2.用两个union把三个结果 合并起来。这两个哪个效率更高些?我感觉后者
如果日期比较少,用UNION 与临时表方法相差不大,只是 INNER JOIN SQL语句比较简洁一些,
倾向于第1种方法
把TYPE=1,TYPE=2,和TYPE=3的记录生成另一张表(这个貌似要用存储过程或者在程序中执行),
然后直接在这张表里进行查询。
completedate,完成时间?可是你那个并不是完成时间,你那个可能是添加任务的时间对数据表进行修改,ID,title,type,create_date, start_date,end_date
增加两个冗余字段来记录任务开始时间和结束时间查询的时候可以这样查询select if(start_date<=curr_date-1,title,'') title_1, if(start_date!=curr_date+1 and end_date!=curr_date-1,title,'') title_2, if(end_date>=curr_date+1,title,'') title_3 from tab_name where start_date<=curr_date+1 and end_date>=curr_date-1;
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。