我有:
Book
has_many :book_authors
has_many :authors, through: :book_authors
BookAuthor
belongs_to :author
belongs_to :book
Author
has_many :book_authors
所以我可以列出有多个作者的书
我想按第一作者的名字给书分类。
有办法吗?
最佳答案
您可以在Authorname
列上使用聚合函数:
Book.left_outer_joins(:authors).group("books.id").order("MIN(authors.name)")
@Pragash
的解决方案是,如果同一本书有许多作者,它将返回许多次。但是,使用Book.joins(:authors).order('authors.name desc')
将返回唯一的书籍。Book.left_outer_joins(:authors).order('authors.name').distinct
关于sql - 按多对多关系的第一条记录对表进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46363050/