1
我想构建一个搜索查询,通过它们的“标记”属性对记录进行分组,并为每个标记组找到一定数量的记录。我的“地点”表如下:Rails - 按组搜索记录
| ID | name | geom | rating_av | tag |
有一个地方可以分配四个不同的标签 - “城市”,“食品”,“酒店”,“魅力”。我希望我的搜索能够返回每个标签组的前五条记录,这些记录由rating_av
订购,并附带几何约束。可我在用下面的时间(这似乎很好地工作)查询每个标签:
Place.find(:all, :limit => 5, :conditions => ["geom && ? and tag = ?", Polygon.from_coordinates([[[xMinLng, yMinLat], [xMinLng, yMaxLat], [xMaxLng, yMaxLat], [xMaxLng, yMinLat], [xMinLng, yMinLat]]], 4326), "food"])
不过,我希望能够检索一个查询的前五个记录每个标签。构建这样一个查询的最好方法是什么?我应该考虑将“标记”列添加为帮助搜索的索引吗?我试着加入:group => 'tag'
到查询,但我也不太清楚如何正确使用它,因为我得到了以下错误回:
ActiveRecord::StatementInvalid (PGError: ERROR: column "places.id" must appear in the GROUP BY clause or be used in an aggregate function
任何帮助非常感谢,谢谢!
感谢您的帮助,是否有一个基于Ruby的方法来实现相同的查询? – Budgie 2010-10-04 19:58:49
更新了我的答案,看看。 – 2010-10-04 21:59:15
真棒,欢呼! – Budgie 2010-10-05 07:37:51