2010-11-13 2 views
0

на моем сайте, я пытаюсь отобразить пешеходные маршруты с последними опубликованными изображениями (Прокрутите к разделу «Изображение»: http://www.trailheadfinder.com/trail_search/latest_trails). Однако текущий запрос, который я использую, показывает следы по порядку «первой» картины размещены. Поэтому, когда новая картинка добавляется позднее, след не отображается вверху. У меня есть таблица трейла и таблица trailpicture, которые связаны. запрос я использую:Нужна помощь по SQL-запросу в 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') 

Любая помощь будет принята с благодарностью

Спасибо,

Nick,

ответ

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", я получаю список новейших фотографий в правильном порядке. Есть ли способ сделать GRIUP BY MAX, как в SQL? – user2666194

+0

Вот SQL, который я хочу выполнить. Я тестировал его в MS Access, и он работает. Как я могу это перевести в Rails? ВЫБОР Trails.ID, Trails.TRAIL_NAME, Trails.TRAIL_DESCRIPTION, Max (Trailpictures.ID) AS MaxOfID ОТ Трассы внутреннее соединение Trailpictures ПО Trails.ID = Trailpictures.TRAIL_ID GROUP BY Trails.ID, Trails.TRAIL_NAME, Trails.TRAIL_DESCRIPTION ORDER BY Max (Trailpictures.ID) DESC; – user2666194

Смежные вопросы