根据其外键所属的行的值对联结 table 的结果进行排序

Ordering the results from a junction table based on values of the row its foreign key belongs to

我有三个表用于多对多:作者、作者身份、书籍。我想 select 作者的行,并根据该行所属的作者按字母顺序排列。 示例:

-- Authors --
ID   Name
1    Peter
2    Gregory
3    Daniel

-- Authorships--
ID   AuthorId    BookId
1    1           1
2    2           1
3    3           1

-- Books--
ID   Name
1    Foobook

我想写一个 select 语句,returns 作者身份中属于特定书籍的所有行然后按作者姓名对结果进行排序。

所以像这样:

SELECT * FROM Authorships WHERE BookId = 1 ORDER BY (Authors.Name???);

除非我需要订购结果。 我理解这个问题可能看起来很愚蠢,因为它 workaround/inefficient 的性质,但我正在处理大量遗留代码,不允许真正更改任何其他内容。

谢谢。

这会起作用:

SELECT auth.* FROM Authorships auth, Authors au, Books bk WHERE auth.BookId = bk.ID and auth.AuthorId = au.ID ORDER BY au.Name

SQLFiddle Link: SQLFiddle