2010-11-13 64 views
0

我试图显示与最新张贴图片的远足径(滚动到“图片部分:http://www.trailheadfinder.com/trail_search/latest_trails)。但是,我使用的当前查询显示在第一张图片的顺序上发布,所以当稍后添加一张新图片时,轨迹不会显示在顶部,我有一个轨迹表和一个轨迹图表,它们是相互关联的。查询我使用:需要帮助在我的网站上的Rails

@trails_pictures = Trailpicture.find(:all, 
            :limit => 20, 
            :include => [:trail], 
            :select => 'trailpictures.trail_id, trails.name, trails.short_description, trails.city, trails.state, trails.country', 
            :group => 'trailpictures.trail_id', 
            :conditions => ["trailpictures.parent_id is NULL"], 
            :order => 'trailpictures.id DESC') 

任何帮助,将不胜感激

谢谢你,

尼克,

回答

0

我终于明白了。这是它需要如何写入:

@trails_pictures = Trail.find(:all, 
           :joins => 'INNER JOIN trailpictures ON trails.id = trailpictures.trail_id', 
           :limit => 20, 
           :conditions => ["trailpictures.parent_id is NULL"], 
           :select => 'trails.id, trails.name, trails.short_description, trails.city, trails.state, trails.country, max(trailpictures.id)', 
           :group => 'trails.id', 
           :order => 'max(trailpictures.id) DESC') 
0

您需要通过created_at进行订购。 :)

+0

我没有该字段。我想我可以添加它。但是,逻辑上,为什么我的查询不起作用?为什么选择最低的trailpictures.id而不是最高?我不会有与created_at的时间戳相同的问题吗?如果我删除“:group”,我会按照正确的顺序获取最新图片的列表。有没有办法像SQL一样执行GRIUP BY MAX? – user2666194 2010-11-21 18:16:30

+0

这是我想要执行的SQL。我在MS Access中测试它,它工作。我如何将这个翻译成Rails? SELECT Trails.ID,Trails.TRAIL_NAME,Trails.TRAIL_DESCRIPTION,Max(Trailpictures.ID)AS MaxOfID FROM Trails INNER JOIN Trailpictures ON Trails.ID = Trailpictures.TRAIL_ID GROUP BY Trails.ID,Trails.TRAIL_NAME,Trails.TRAIL_DESCRIPTION ORDER BY Max(Trailpictures.ID)DESC; – user2666194 2010-11-21 18:57:41