我有这张桌子:
create table Enrolment (
student integer,
course varchar(5),
semester integer NOT NULL,
finalgrade char NOT NULL DEFAULT '-',
--constraints
foreign key (student) references Student(studentid) on delete cascade,
foreign key (course) references Course(courseid) on delete cascade,
primary key(student, course),
check (semester >= 1 AND semester <= 8),
check (finalgrade='F' OR finalgrade='P' OR finalgrade='G' OR finalgrade='E')
);
我希望看到最终等级降序排序的所有注册,即E(优秀),G(优秀),P(通过)和F(失败)。
create table Grade(
finalgrade char NOT NULL DEFAULT '-',
number integer, -- E (corresponding to 1), G(2), P(3) and F(4)
foreign key (finalgrade) references Enrolment(finalgrade) on delete cascade,
primary key(finalgrade),
check (finalgrade='F' OR finalgrade='P' OR finalgrade='G' OR finalgrade='E')
);
然后连接表以将注册显示为第二个表中的数字。但是,第一个表的约束最终级别并不是唯一的,因此该解决方案不起作用 该表的数据类似于:
我想显示如下数据 - E等级先行然后G然后是P和F:
答案 0 :(得分:2)
你的引用方式错误。它应该是Enrollment表的最终级别,它引用了Grade表的最终级别,而不是像你那样反过来。