如题
张三给李四发了1个任务 任务的结束时间是 2011-04-15
然后有个字段 EndWarningNumber 是任务结束前几天提醒 比如EndWarningNumber =3 那就是在2011-04-12这天提醒 13号 14号 都提醒所想得到的结果是
进入一个页面 一个列表 列表上显示
需要提醒的任务
多个人都给李四发了
这个列表上就显示需要提醒完成的任务
表结果
BaseUserInfo 用户表 id name
TaskPublished 任务发布表 ID name EndWarningNumber EndPeriod(任务结束时间)
OrganizeTask 任务接收表 用户ID 任务ID求解~~~~
张三给李四发了1个任务 任务的结束时间是 2011-04-15
然后有个字段 EndWarningNumber 是任务结束前几天提醒 比如EndWarningNumber =3 那就是在2011-04-12这天提醒 13号 14号 都提醒所想得到的结果是
进入一个页面 一个列表 列表上显示
需要提醒的任务
多个人都给李四发了
这个列表上就显示需要提醒完成的任务
表结果
BaseUserInfo 用户表 id name
TaskPublished 任务发布表 ID name EndWarningNumber EndPeriod(任务结束时间)
OrganizeTask 任务接收表 用户ID 任务ID求解~~~~
解决方案 »
- 急问:sql server 不使用sa访问的对策?
- 存储过程问题,周键等高手请进
- 请教一个分段+动态列统计的存储过程!!!
- 关于截取的问题!
- 同一局域网内虚拟机里连接其他虚拟机里MSSQL 2005数据库
- 连接服务器(link server)
- 數據庫行轉列
- 在sql server 里 如何存储图片
- Oracle与SQL Server相比,有哪些优势?
- update in in 多次更新问题
- MySQL 数据库被删掉 “customers_basket",
- 求解sql多表查询:topic.csdn.net/u/20110415/19/a122136f-fe51-4082-80ac-cc5a84e432a1.html
至于差几天 你可以datediff(dd,开始时间,结束时间)
select * from table
where dateadd(dd,-几天?,time字段)<=getdate()
select * from organizetask c,baseuesrinfo a,taskpublished b
where c.用户id=a.id and a.name='李四'
and c.任务id=b.id and datediff(dd,endperiod,getdate())
between 0 and b.EndWarningNumber
SELECT
需要提醒的任务名称 = a.[name],
任务接收者 = STUFF((SELECT ','+c.[name] FROM OrganizeTask WHERE 任务ID=b.任务ID FOR XML PATH('')), 1, 1, ''),
任务发送者 = STUFF((SELECT ','+[name] FROM TaskPublished WHERE ID=a.ID FOR XML PATH('')), 1, 1, '')
FROM TaskPublished a
INNER JOIN OrganizeTask b
ON a.ID = b.任务ID
AND DATEDIFF(DAY, GETDATE(), a.EndPeriod) = a.EndWarningNumber
INNER JOIN BaseUserInfo c
ON b.用户ID = c.id
WHERE c.[name] = N'李四' --去掉这句,看一下是否是你想要的结果
GROUP BY 需要提醒的任务名称