【发布时间】:2014-05-11 07:08:16
【问题描述】:
我正在开发一个应用程序,用于跟踪 Apex 学校学生的课堂出勤情况。 我想创建一个包含三级级联选择列表的页面,因此教师可以先选择学期,然后选择学科,然后选择该学科的特定班级,这样应用程序就会返回在该班级注册的学生。
我的问题是这三个表之间是多对多的关系,所以我使用额外的表和它们的键。 每个学期都有许多科目,一个科目可以在许多学期中教授。 每个学科在每个学期都有许多课程。 学生必须每学期报读一门学科,然后老师可以将他们分配到一个班级。
表格看起来像这样:
create table semester(
id number not null,
name varchar2(20) not null,
primary key(id)
);
create table subject(
id number not null,
subject_name varchar2(50) not null,
primary key(id)
);
create table student(
id number not null,
name varchar2(20),
primary key(id)
);
create table semester_subject(
id number not null,
semester_id number not null,
subject_id number not null,
primary key(id),
foreign key(semester_id) references semester(id),
foreign key(subject_id) references subject(id),
constraint unique sem_sub_uq unique(semester_id, subject_id)
);
create table class(
id number not null,
name number not null,
semester_subject_id number not null,
primary key(id),
foreign key(semester_subject_id) references semester_subject(id)
);
create table class_enrollment(
id number not null,
student_id number not null,
semester_subject_id number not null,
class_id number,
primary_key(id),
foreign key(student_id) references student(id),
foreign key(semester_subject_id) references semester_subject(id),
foreign key(class_id) references class(id)
);
学期选择列表的值列表如下所示:
select name, id
from semester
order by 1;
主题选择列表应该包括上面选择的学期中所有可用主题的名称,但我无法确定查询,即使它是可能的。我现在拥有的:
select s.name, s.id
from subject s, semester_subject ss
where ss.semester_id = :PX_SEMESTER //value from above select list
and ss.subject_id = s.id;
但是你不能在 LoV 中有两个表,而且查询可能是错误的...... 我什至没有开始考虑这个类的查询会是什么样子。
感谢您的帮助,或者您能否指出正确的方向,以便我自己解决。
【问题讨论】:
-
你做得很好,这就是你应该做的,继续!
标签: plsql oracle-apex