Sql server 具有自连接的多参数选择
抱歉,标题不够清晰,但我不知道如何总结我的请求: 如果有人想提出建议,我会修改它 回到问题上来: 我想将一些现在在经典ASP中执行的例程转换为T-SQL 有两个表:Sql server 具有自连接的多参数选择,sql-server,self-join,Sql Server,Self Join,抱歉,标题不够清晰,但我不知道如何总结我的请求: 如果有人想提出建议,我会修改它 回到问题上来: 我想将一些现在在经典ASP中执行的例程转换为T-SQL 有两个表: Users and Messages 用户是这样的: ID USERID ROLE CLASS PARENTOF SUBJECTS 13 CarolineW parent BillC,JohnC 12 IsabelF pa
Users and Messages
用户是这样的:
ID USERID ROLE CLASS PARENTOF SUBJECTS
13 CarolineW parent BillC,JohnC
12 IsabelF parent AlexG,AnnG
11 SaraW teacher MATH-3a,MATH-4a,MATH-5b,MATH-1a
10 JohnT teacher ENG-4a,GEO-2a,GEO-1a
9 MatildaW student 4a
8 JohnC student 2a
7 AlexG student 4a
6 CamillaH student 4a
5 BillC student 2a
4 AnnG student 1a
3 KarlK admin
2 AnnF control
1 BillT superadmin
而消息等具有以下字段:
ID SELECTOR SENDTO SENDER ANSWERED
13 4a,JohnC,JohnT parent,student admin CarolineW,IsabelF
12 4a,4b,SaraW parent .... Null
11 1a teacher,parent SaraW JohnT,IsabelF
10 1a teacher,admin IsabelF Null
规则:
所有用户都可以通过设置2个参数向其他人发送消息:
选择器是目标
定义到目标的连接的SendTo:
ie:ID11信息以(班级)1a为目标,教师和家长为发送人:
这意味着信息必须转发给1a班学生的所有老师和家长
信息ID13必须发送给4a班的所有家长和学生、JohnC的家长和他本人(因为是学生)以及JohnT的学生(因为是老师)
另一方面,由于信息也可以在学校的电子板上获得,我希望每个用户在访问其帐户时都可以根据上述规则阅读所有发送给他的信息
最后将列出所有尚未回复该消息的用户
目前,我已经在经典asp中使用了一些for/next循环来执行这样的结果,但我想知道T-SQL解决方案是否更高效、更优雅,因为我在T-SQL方面的知识非常有限,到目前为止,我只能
提取发送给学生或家长但使用两个不同查询的消息(虽然几乎相同,但缺少一些控件),目标是使用单个查询
还是不可能
你能指出实现这一结果的途径吗
考虑到用户数量(少于500个),实际例程虽然肯定没有效率,但对服务器没有太大影响:因此,主要目标不是提高性能,而是为了学习
谢谢你的建议和评论
乔
规则:
所有用户都可以通过设置2个参数向其他人发送消息:
选择器是目标
定义到目标的连接的SendTo:
ie:ID11信息以(班级)1a为目标,教师和家长为发送人:
这意味着信息必须转发给1a班学生的所有老师和家长
信息ID13必须发送给4a班的所有家长和学生、JohnC的家长和他本人(因为是学生)以及JohnT的学生(因为是老师)
另一方面,由于信息也可以在学校的电子板上获得,我希望每个用户在访问其帐户时都可以根据上述规则阅读所有发送给他的信息
最后将列出所有尚未回复该消息的用户
目前,我已经在经典asp中使用了一些for/next循环来执行这样的结果,但我想知道T-SQL解决方案是否更高效、更优雅,因为我在T-SQL方面的知识非常有限,到目前为止,我只能
提取发送给学生或家长但使用两个不同查询的消息(虽然几乎相同,但缺少一些控件),目标是使用单个查询
还是不可能
你能指出实现这一结果的途径吗
考虑到用户数量(少于500个),实际例程虽然肯定没有效率,但对服务器没有太大影响:因此,主要目标不是提高性能,而是为了学习
谢谢你的建议和评论
Joe您可能会调查数据库规范化,因为给定的结构总是让人不愉快。嗨!谢谢你的评论。。但你说的数据库规范化是什么意思?从我所读到的关于规范化的主要原则是避免冗余,对于采用的结构,信息只设置了一次:可以给我一些更多的提示吗?TKS