2014-12-24 8 views
0

Что я хочу сделать, лучше всего проиллюстрировать небольшим примером.Sequelize join with group

Скажем, у меня есть следующие таблицы:

Таблица Item

  • идентификатор
  • имя

Таблица Обзор

  • ID
  • рейтинг
  • Itemid

Очевидно, есть много отзывов на один пункт.

Как написать запрос, который возвращает следующие два столбца:

  • название элемента (Item.name)
  • Сумма всех оценок по элементу (Sequelize.fn('sum', sequelize.col('rating')))

I» d хотел бы использовать ORM.

ответ

0

Попробуйте использовать это:

Review.belongsTo(Item, {foreignKey:'itemId', as : 'reviews'}); 
Item.hasMany(Review, {foreignkey:'id'}); 

Item.findAll({attributes:[['id', 'id'],['name', 'name'],[Sequelize.fn('SUM', 'rating'), 'total']], include:[{model:Review, as : 'reviews', required:true}], group:['id'], order:[Sequelize.fn('SUM', 'rating'), 'DESC']}).success(function(result){ 
    // return array; 
    // total  -----> result[i].total 
    // item name -----> result[i].name 
})