【发布时间】:2017-04-05 11:20:38
【问题描述】:
我在构建一个查询时遇到问题,该查询将按多对多关系中关联表的列进行排序。
例如,一个用户有_many 个标题和一个标题有_many 个用户。它们的关系位于 UserTitle 表中。我将如何编写一个范围(以便它可以与其他查询链接) 返回按用户第一个标题的“名称”列排序的用户
<User id: 1, name: 'Bob'>
<User id: 2, name: 'Joe'>
<UserTitle id: 1, user_id: 1, title_id: 2>
<UserTitle id: 2, user_id: 2, title_id: 1>
<UserTitle id: 3, user_id: 2, title_id: 2>
<Title id: 1, name: 'A-Name'>
<Title id: 2, name: 'B-Name'>
如果这些是用户对象及其关联表在我的数据库中,我希望排序查询首先返回 Joe,然后是 Bob(因为 Joe 的第一个标题是其中包含 A 的标题,它在字母表中排在第一位)。使用 ruby 逻辑这很容易,但是在使用 ActiveRecord 构建 SQL 查询时,我不知道如何处理它。
【问题讨论】:
-
并且用户的“第一个”标题也应该是字母顺序的第一个? (您知道表中的行没有自然的“顺序”。)您的
UserTitle id很可能应该是不同的(目前都是1),但这仍然不是定义“第一个”标题的好方法。 -
不,没必要。也感谢您发现错误@ErwinBrandstetter
-
那么你有答案了吗?
标签: mysql ruby-on-rails postgresql sorting activerecord