1

我本质上想通过外键条目的列对特定的查询结果进行排序。这是我的表:

class
------
classId
profId    //Points to a profId from professor table
courseId  //Points to a specific courseId from course table
semId     //Points to a specific semId from semester table

professor
---------
profId
first   //first name
last    //last name

course
------
courseId
department //The `CMSC` in CMSC101
number    //The `101` in CMSC101
title    

semester
--------
semId
season  //example: Spring, Summer, Fall
year

我希望它们按层次排序,但也按类列的列中的外键排序。所以,我会SELECT从所有条目class中按以下顺序对它们进行排序:

  1. 课程 -> 部门
  2. 课程 -> 号码
  3. 课程 -> 部分
  4. 教授->最后
  5. 教授->第一
  6. 学期 -> 年
  7. 学期 -> 季节
4

2 回答 2

2

啊,这比之前发布的问题更有意义。您首先需要将所有表连接在一起,然后您可以排序:

SELECT
  Course.Department,
  Course.Number,
  Course.Section,
  Professor.Last,
  Professor.First,
  Semester.Year,
  Semester.Season
FROM Class
INNER JOIN Course ON Class.CourseID = Course.CourseID
INNER JOIN Professor ON Class.ProfID = Professor.ProfID
INNER JOIN Semester ON Class.SemID = Semester.SemID
ORDER BY
  Course.Department,
  Course.Number,
  Course.Section,
  Professor.Last,
  Professor.First,
  Semester.Year,
  Semester.Season

这些列不必列表中SELECT以便您按它们排序,但在大多数情况下,将它们包含在其中是有意义的。

于 2013-04-07T01:11:16.780 回答
-1

假设在所有表上连接,为什么不只是

按 COL1、COL2、...COLN 排序

执行联接时,您将有权访问每个联接表中的所有列。示例: http ://sqlfiddle.com/#!2/30e14/1

于 2013-04-07T01:13:28.117 回答