一、sql根据一个以逗号隔开的人员guid类型的ID字符串查出其对应的姓名同样拼接成逗号隔开的字符串:

1、需求:管理员发送通知(通知分为普通通知,奖品订单,调查问卷三种类型)给用户,并且可以查看统计哪些人员查看了,哪些还没有查看。

2、数据库表设计:通知表,人员表,奖品订单表,调查问卷的3个表,用户通知表

3、sql语句查讯已发通知信息:

select a.*,e.NoRead,e.AlRead,ToUserName= STUFF(( SELECT ',' + Name
FROM Users d
where PATINDEX('%,' + RTRIM(Account) + ',%',',' + a.ToUserID + ',')>0
ORDER BY PATINDEX('%,' + RTRIM(Account) + ',%',',' + a.ToUserID + ',') --加上排序不变(如:2,1,3)
FOR XML PATH('')), 1, 1,''),
case a.NoticeTypeID when 2 then '调查问卷' when 3 then '奖品订单' else '普通通知' end as NoticeTypeName,b.AwardOrderTitle,
b.AwardOrderDescription,c.QuestionnaireTitle from Notices a
left join AwardOrders b on a.AwardOrderID=b.ID and b.status=1
left join QuestionnairesInfor c on a.QuestionnaireID=c.ID and c.status=1
left join (select NoticeID, COUNT(1)as sumcount,NoRead=sum(case [status] when 1 then 1 else 0 end),
AlRead= sum(case [status] when 2 then 1 else 0 end)
from UserNotices group by NoticeID) e on a.NoticesID=e.NoticeID
where a.status=1

二、根据字段ToUserID中存储的以逗号隔开的用户Guid类型的ID字符串,将通知发送到用户通知表:

1、需求:将通知分发给各个用户(根据用户分条保存到用户表)

2、数据库设计同一

3、sql发送通知:

insert into UserNotices(ID,NoticeID,Noticetype,AwardsOrderID,QuestionnaireID,CreatManAccount,CreatManName,CreatDate,[status])
( select NEWID(),NoticesID,NoticeTypeID,AwardOrderID,QuestionnaireID,b.Account,b.Name,GETDATE(),1
from Notices a left join Users b on PATINDEX('%,' + RTRIM(Account) + ',%',',' + a.ToUserID + ',')>0
where a.NoticesID=@NoticeID ) --@NoticeID为参数通知ID

最新文章

  1. Python-01-基础
  2. MySQL、PostgreSQL、Ingres r3、MaxDB等开源数据库的详细比较
  3. Measuring the amount of writes in InnoDB redo logs
  4. 剑指Offer:面试题7——用两个栈实现队列(java实现)
  5. express 4.x 模板引擎与express.static
  6. apply()与call()的区别
  7. sql 根据时间获取数据
  8. Linux下SVN(Subversion)自动启动脚本
  9. 用composer安装 Laravel | Laravel需要的环境配置
  10. crawler_如何从页面获取新浪cookie
  11. Nginx http和https 共存
  12. iOS SQLite解密之SQLCipher
  13. Ruby数组方法整理
  14. Kotlin从入门到放弃
  15. Linux下Qt Creator编辑器无法输入中文解决
  16. 根据某个字段去重 根据另一个字段排序的一个SQL
  17. LINK:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 (转)
  18. 别致的语言GO(GO语言初涉)
  19. eclipse指定jdk路径
  20. 使用Tesseract-OCR 进行文字识别

热门文章

  1. 修复Dll文件
  2. BZOJ1576 (最短路+并查集)
  3. PHP访问REST API上传文件的解决方案
  4. Application,Session,Cookie,ViewState和Cache区别
  5. 我为什么要进国企----HP大中华区总裁孙振耀退休感言
  6. php 多进程workman服务器框架
  7. RESTful 杂文归集
  8. SVM学习笔记
  9. igv
  10. R 读取clipboard内容 (MAC)