Sybase SQL动态选择(连接?)关系数据库

时间:2011-04-05 18:01:02

标签: sql select join sybase relational-database

我正在编写一个网页,以旧的成绩簿格式显示学生成绩,也就是说,它显示学生姓名,然后是每个作业的分数(连续),然后每个学生重复一行。我的表格设置如下(缩写为必要信息):

表:作业
 * Assignment_PK(主键)
 * Assignment_Name

表:学生
 * Student_PK(主键)
 * Student_Name

表:StudentAssignment
 * SA_PK(主键
 * Student_FK(Student.Student_PK)
 * Assignment_FK(Assignment.Assignment_PK)
 *分数

我正在尝试编写一个SELECT语句,用于打印每个作业的学生姓名和分数。我遇到的问题是,如果我选择Score作为一列,我只得到一个作业的得分,因为在我的WHERE Assignment_FK = Assignment_PK中只允许我为一个列选择一个得分。

我对关系数据库很新,我真的可以用最好的方法解决这个问题。一个建议是我写一个SELECT语句来挑选所有学生到一个表中,然后在表中做一个foreach行并让它选择得分并将它们放在适当的列中。这似乎是一个缓慢而不必要的过程。使用JOINS有更简单的方法吗?或者写一个更好的SELECT?

1 个答案:

答案 0 :(得分:1)

这可以为您提供所需的数据。然后,您可以调查将其转换为所需的显示格式,可能在您的应用程序中比在数据库中更容易。

SELECT s.Student_Name, a.Assignment_Name, sa.Score
    FROM Student s
        INNER JOIN StudentAssignment sa
            ON s.Student_PK = sa.Student_FK
        INNER JOIN Assignment a
            ON sa.Assignment_FK = a.Assignment_PK
    ORDER BY s.Student_Name, a.Assignment_Name
相关问题