Ruby on rails Rails:使用两列返回uniq结果
在用户提交搜索后,我想显示哪些公司在哪一天进行了相同搜索的历史记录。让我解释一下 我有一个Ruby on rails Rails:使用两列返回uniq结果,ruby-on-rails,ruby,Ruby On Rails,Ruby,在用户提交搜索后,我想显示哪些公司在哪一天进行了相同搜索的历史记录。让我解释一下 我有一个搜索表,如下所示: id user_id date query 1 1 01-01-2015 A457263 2 1 01-01-2015 A457263 3 2 01-01-2015 A457263 4 3 01-01-2015 A457263 5 3
搜索
表,如下所示:
id user_id date query
1 1 01-01-2015 A457263
2 1 01-01-2015 A457263
3 2 01-01-2015 A457263
4 3 01-01-2015 A457263
5 3 02-01-2015 A457263
而用户
属于一家公司:
id company_id
1 1
2 1
3 2
id name
1 Company One
2 Company Two
现在我要做的是选择针对特定查询的所有搜索A457263
。我假设它:
query = params[:query]
@history = Search.where("query = ?", query)
然后过滤掉同一公司用户在同一天重复搜索的内容
因此最终结果如下所示:
id user_id date query
1 1 01-01-2015 A457263
4 3 01-01-2015 A457263
5 3 02-01-2015 A457263
我一直在玩弄uniq方法,但这次我没法摆脱它。你需要根据公司ID和搜索日期进行搜索
@history = Search.includes(:user).where("searches.query = ?", query).group("users.company_id, searches.date")
includes
允许您访问用户表,该表允许您根据公司ID进行分组。group
确保每个公司ID和搜索日期只获得一条记录。这应该可以做到:
@history = Search.includes(:user).where("searches.query = ?", query).group("users.company_id, searches.date")
@history = Search.joins(:users).where("searches.query = ?", query).uniq.group("users.company_id, searches.date")