本文共 1867 字,大约阅读时间需要 6 分钟。
Class:
001 | 语文 |
002 | 数学 |
Student:
031231301 | 张三 | 001 |
031231301 | 张三 | 002 |
031231302 | 李四 | 001 |
那么,这两个关系表达的意思:选语文的有张三和李四;选数学的有李四。如果想做一个视图(V_STU_CLA)来表达这种一对多关系(一门课程,被多个学生所选择),可以使用一个简单的左联语句来完成:
ClassID | ClassName | SName |
001 | 语文 | 张三 |
001 | 语文 | 李四 |
002 | 数学 | 张三 |
这样虽然能够清晰的表达选课关系,但是,某些情况下,它不如下面这种形式来得一目了然:
ClassID | ClassName | SNames |
001 | 语文 | 张三,李四 |
002 | 数学 | 张三 |
要达到这样的目的,需要完成一个一对多关系到一对一关系的转换。这样的转换,在数据库中,可以借助函数来进行,因为函数中应用到了游标,故对于Oracle和MSSQL稍有不同,附上两个版本的函数SQL代码:
MS-SQL版:
MS-SQL调用时,通过以下语句实现:
ORACLE中调用方法类似。
本文转自Jack Niu博客园博客,原文链接:http://www.cnblogs.com/skywind/archive/2008/04/09/1144676.html,如需转载请自行联系原作者