抱歉在标题中不够清楚,但我不知道如何总结我的要求: 如果有人想建议,我会修改它。
回到问题: 我想将现在在经典ASP中执行的一些例程转换为T-SQL
有2个表:
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定义与目标的连接:
即:消息ID11将(类)1a作为目标,将教师和父母作为SendTo: 这意味着必须将信息转发给1a级学生的所有教师和家长
消息ID13必须发送给所有家长和4a级学生,父母和JohnC的学生(因为是学生)和JohnT的学生(因为是教师)。
另一方面,由于学校电子板上也有消息,我希望每个用户在访问其帐户时都可以阅读根据上述规则发给他的所有消息。最后会列出尚未回复该消息的所有用户。
目前我已经使用经典asp中的一些for / next循环执行了这样的结果但是我想知道T-SQL解决方案是否更高效,而且肯定更优雅,因为我对T-SQL的了解非常有限所以我只能做到这一点 提取给学生或父母的消息,但使用2个不同的查询,虽然几乎相同,但缺少一些控件和目标是只有一个查询
还是不可能?
可以指出实现这种结果的路径吗?
考虑到实际例程的用户数量(少于500个),虽然效率肯定不高但不会对服务器产生很大影响:因此,主要目标不是为了提高性能而是为了学习目的。
感谢您的任何建议和评论。
乔
规则: 所有用户都可以向其他人发送消息,设置2个参数: 作为目标的选择器 SendTo定义与目标的连接:
即:消息ID11将(类)1a作为目标,将教师和父母作为SendTo: 这意味着必须将信息转发给1a级学生的所有教师和家长
消息ID13必须发送给所有家长和4a级学生,父母和JohnC的学生(因为是学生)和JohnT的学生(因为是教师)。
另一方面,由于学校电子板上也有消息,我希望每个用户在访问其帐户时都可以阅读根据上述规则发给他的所有消息。最后会列出尚未回复该消息的所有用户。
目前我已经使用经典asp中的一些for / next循环执行了这样的结果但是我想知道T-SQL解决方案是否更高效,而且肯定更优雅,因为我对T-SQL的了解非常有限所以我只能做到这一点 提取给学生或父母的消息,但使用2个不同的查询,虽然几乎相同,但缺少一些控件和目标是只有一个查询
还是不可能?
可以指出实现这种结果的路径吗?
考虑到实际例程的用户数量(少于500个),虽然效率肯定不高但不会对服务器产生很大影响:因此,主要目标不是为了提高性能而是为了学习目的。
感谢您的任何建议和评论。
乔