mySQL ORDER BY使用FOREIGN KEYS

时间:2013-04-07 01:00:12

标签: mysql foreign-keys

我基本上想要通过外键的条目列对特定查询结果进行排序。以下是我的表格:

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. 学期 - >季节

2 个答案:

答案 0 :(得分: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

不在<{1}}列表中供您排序,但在大多数情况下,将它们包含在那里是有意义的。

答案 1 :(得分:-1)

假设所有表都加入,为什么不只是

按COL1,COL2,COLN排序

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