我有:

Book
  has_many :book_authors
  has_many :authors, through: :book_authors

BookAuthor
  belongs_to :author
  belongs_to :book

Author
  has_many :book_authors

所以我可以列出有多个作者的书
sql - 按多对多关系的第一条记录对表进行排序-LMLPHP
我想按第一作者的名字给书分类。
sql - 按多对多关系的第一条记录对表进行排序-LMLPHP
有办法吗?

最佳答案

您可以在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/

10-11 06:39