父子表建立以及相关操作

来源:互联网 发布:笔记本网络共享给手机 编辑:程序博客网 时间:2024/05/21 22:29

1.建立Student表
表名:t_Student RowID:St_RowID
属性:StCode,StName,StSexDR,StDob
StSexDR为性别指向,指向一个CTSex性别表

Class User.Student Extends %Persistent [ SqlRowIdName = St_RowID, SqlTableName = t_Student, StorageStrategy = StudentStorage ]{Property StCode As %String [ Required, SqlColumnNumber = 2, SqlFieldName = st_code ];Property StName As %String [ SqlColumnNumber = 3, SqlFieldName = st_name ];Property StSexDR As CTSex [ SqlColumnNumber = 4, SqlFieldName = st_sex_dr ];Property StDob As %Date [ SqlColumnNumber = 5, SqlFieldName = st_dob ];Relationship ChildCourse As User.StuCourse [ Cardinality = children, Inverse = StudParRef ];Index indexcode On StCode;}

2.建立Course表

Class User.Course Extends %Persistent [ SqlRowIdName = C_RowID, SqlTableName = t_Course, StorageStrategy = CourseStorage ]{Property Code As %String [ SqlColumnNumber = 2, SqlFieldName = C_Code ];/// 课程描述Property Desc As %String [ SqlColumnNumber = 3, SqlFieldName = C_Desc ];Property DateFrom As %Date [ SqlColumnNumber = 4, SqlFieldName = C_DateFrom ];Property Active As %String(DISPLAYLIST = ",Yes,No", MAXLEN = 3, TRUNCATE = 1, VALUELIST = ",Y,N") [ SqlColumnNumber = 5, SqlFieldName = C_Active ];Property UserDr As User.SSUser [ SqlColumnNumber = 6, SqlFieldName = C_User_Dr ];}

3.学生选课表

Class User.StuCourse Extends %Persistent [ SqlRowIdName = SC_RowID, SqlTableName = t_StuCourse, StorageStrategy = stucourse ]{Index RowIDBasedIDKeyIndex On SCChildSub [ IdKey, PrimaryKey, Unique ];Relationship StudParRef As User.Student [ Cardinality = parent, Inverse = ChildCourse, Required, SqlFieldName = SC_S_ParRef ];Property SCChildSub As %Library.Numeric(SCALE = 0) [ InitialExpression = {$i(^STUDENT($p($s($d(initvalue):initvalue,1:%d(0)),$c(1)),"C",0))}, Required, SqlColumnNumber = 2, SqlFieldName = SC_ChildSub ];Property SCCourseDr As User.Course [ SqlColumnNumber = 3, SqlFieldName = SC_Course_Dr ];Property SCScore As %Float [ SqlColumnNumber = 4, SqlFieldName = SC_Score ];}

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
注意:Rowid用表名.Rowid

4.查询某个学生的选课情况

Class web.StuCourse Extends %Persistent{ClassMethod FindCourseByStud(stuno){    Quit:stuno="" ""    ;第二个空是返回值    set stuId=$o(^STUDENTi(0,"No",stuno,""))    set sub=0    For  set sub=$o(^STUDENT(stuId,"C",sub))  quit:sub=""  d    .set g=^STUDENT(stuId,"C",sub)    .set CourseId=$p(g,"^",1)    .set CourseDesc=$p(^COURSE(CourseId),"^",2)    .set Score=$p(g,"^",2)    .Write CourseDesc_" "_Score}}
0 0
原创粉丝点击