2015-02-27 2 views
0

Я изучаю join таблицы для ассоциаций и огня select и group запрос вместе. Предположим, у меня есть база данных, как:PG запрос для выбора и группы в рельсах 4

Заказы:

#has_many :items 
id , title , description 

Предметы:

#belongs_to :order 
#belongs_to :product 
id , order_id , name , product_id , cost 

Теперь я хочу перечислить названия всех заказов с общим количеством order_id из таблицы Item. Для например:

Order_title_1 => 5 (count of order_id) 

Я попробовал этот запрос, но дает ошибку: я знаю, что это не правильно

Item.joins(:orders).select("orders.id, orders.title, SUM(items.order_id) as total").group("order_id") 
+0

Какая у вас ошибка? –

+0

ActiveRecord :: ConfigurationError: ассоциация с именем «orders» не найдена в Item; возможно, вы это написали? –

ответ

1

Как вы в PostgreSQL, столбцы, присутствующие в пункте SELECT должен присутствовать в group by, кроме той, которую вы использовали внутри агрегата. Но в вашем случае это было не так. Попробуйте написать код как:

Item.joins(:order) 
    .select("orders.id, orders.title, SUM(items.order_id) as total") 
    .group("orders.id, orders.title") 
+0

2.1.2: 057> Item.joins (: orders) .select ("orders.id, orders.title, SUM (items.order_id) как total"). Group ("orders.id, orders.title") ActiveRecord :: ConfigurationError: ассоциация с именем «orders» не была найдена в Item; возможно, вы это написали? –

+0

@HetalKhunti Я сделал ..;) –

+1

Сейчас он работает ... Я тоже пробовал то же самое, но, как я уже говорил выше, я получал ошибку, но теперь это работает спасибо –

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