一、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

sqlserver 字符串拼接及拆开联表查询的问题的更多相关文章

  1. mybatis 联表查询

    一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...

  2. mysql数据库之联表查询

    表准备: 这次我们用到5张表: class表: student表: score表: course表: teacher表: 表结构模型: 我们针对以下需求分析联表查询: 1.查询所有的课程的名称以及对应 ...

  3. .NET 6 跨服务器联表查询

    一.大家是否有这个需求 1.跨品种查询 :比如 MYSQL和一个SQLSERVER进行联表查询 ,或者SQLITE和MYSQL进行联表查询 2.跨服务器查询 : A服务器和B服务器查询 如果想同时支持 ...

  4. [慢查优化]联表查询注意谁是驱动表 & 你搞不清楚谁join谁更好时请放手让mysql自行判定

    写在前面的话: 不要求每个人一定理解 联表查询(join/left join/inner join等)时的mysql运算过程: 不要求每个人一定知道线上(现在或未来)哪张表数据量大,哪张表数据量小: ...

  5. (转)MySQL联表查询

    资料源于网络   一.内联结.外联结.左联结.右联结的含义及区别在SQL标准中规划的(Join)联结大致分为下面四种:1.内联结:将两个表中存在联结关系的字段符合联结关系的那些记录形成记录集的联结.2 ...

  6. Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题

    Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题 表更描述: 将mysql数据库中的worktask表添加ishaspic字段. 具体操作:(1)数据库worktask表新添是否有图片字 ...

  7. 【转】[慢查优化]联表查询注意谁是驱动表 & 你搞不清楚谁join谁更好时请放手让mysql自行判定

    转自:http://zhengyun-ustc.iteye.com/blog/1942797 写在前面的话: 不要求每个人一定理解 联表查询(join/left join/inner join等)时的 ...

  8. SQL联表查询

    数据库中最最常用的语法----select.简单的select语法很直白: select column from table where expression: 从((from)存储数据的地方(tab ...

  9. sql学习笔记(三)—— 联表查询

    上篇写了一些sql查询的知识,这篇接着写一下有关联表查询的知识. 既然是联表查询,那肯定得多个表啊,所以,我们先创建一个教师表,表名为 teacher,并且向表中插入数据. 准备工作: 创建表语句: ...

随机推荐

  1. Bootstrap全局css

    HTML中的所有标题标签,<h1>到<h6>均可使用.另外,还提供了.h1到.h6类,为的是给内联(inline)属性的文本赋予标题的样式.在标题内还可以包含<small ...

  2. UITableView详解(1)

    一,UITableView控件使用必备,红色部分是易错点和难点 首先创建一个项目,要使用UITableView就需要实现协议<UITableViewDataSource>,数据源协议主要完 ...

  3. WPF入门教程系列(一) 创建你的第一个WPF项目

    WPF入门教程系列(一) 创建你的第一个WPF项目 WPF基础知识 快速学习绝不是从零学起的,良好的基础是快速入手的关键,下面先为大家摞列以下自己总结的学习WPF的几点基础知识: 1) C#基础语法知 ...

  4. /bin/bash^M: bad interpreter: 没有那个文件或目录

  5. ASP.NET定制简单的错误处理页面

    通常Web应用程序在发布后,为了给用户一个友好界面和使用体验,都会在错误发生时跳转至一个自定义的错误页面,而不是ASP.net向用户暴露出来的详细的异常列表. 简单的错误处理页面可以通过web.con ...

  6. PHP 中替换若干字符串字串为数组中的值,不用循环,非常高效

    替换某个字符串中的一个或若干个字串为数组中某些值 php本身有自带的函数,可以不用循环非常高效的实现其效果: 实例代码:   $phrase  = "You should eat fruit ...

  7. mark资料-selenium断言的分类

    操作(action).辅助(accessors)和断言(assertion): 操作action: 模拟用户与 Web 应用程序的交互. 辅助accessors: 这是辅助工具.用于检查应用程序的状态 ...

  8. Linux 安装挂载时注意事项

    Linux系统下使用的是目录树系统,所以安装的时候要规划磁盘分区与目录树的挂载.实际上,在Linux系统安装的时候已经提供了相当多的默认模式让你选择分割的方式了,不过无论如何,分割的结果可能都不是能符 ...

  9. POJ 2387 Til the Cows Come Home

    题目链接:http://poj.org/problem?id=2387 Til the Cows Come Home Time Limit: 1000MS   Memory Limit: 65536K ...

  10. ES6-Symbol

    javaScript的数据类型:number,string,boolean,undefined,null,object ES6带来了一个新的数据类型:symbol 目的是:解决对象的属性名冲突的问题. ...