sequelize-基于另一个表中的计数从一个表返回行

wlzqhblo  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(230)

在sequelize中我很难理解这个查询。假设我有一张“参赛者”的表格,我也有一张“参赛者评分”的表格,每个参赛者在这个评分表中都有很多评分。参赛者。有很多(参赛者评分)。。。我想查询参赛者,只有当他们在参赛者评分表中的评分少于10分时才返回。我在用sequelize和postgres。
样本数据:

// Contestant ratings table
id.   name.   rating.   contestant_id    
1.    Rob.    9.        78
2.    Colin.  7.        101
3.    Fatima. 10.       50
4.    Rob.    9.        78
5.    Rob.    7.        78
6.    Rob.    9.        78
7.    Rob.    4.        78
8.    Rob.    9.        78
9.    Rob.    3.        78
10.    Rob.    9.        78
11.    Rob.    6.        78
12.    Rob.    4.        78
13.    Rob.    7.        78

// Contestant table
id.    name. 
78.    Rob.
101.   Colin.
50.    Fatima.

// Expected output:
{ name: Colin, id: 101 }, { name: Fatima, id: 50 }
fzsnzjdm

fzsnzjdm1#

这是我的工作方案!

let characters = await Contestant.findAll({
                include: [{ model: ContestantRating }],
                attributes: [
                    [sequelize.fn('count', sequelize.col('contestant_ratings.contestant_id')), 'contestant_id'],
                    'name'
                ],
                group: ['contestant_ratings.id', 'contestant.id'],
                having: sequelize.where(sequelize.fn('count', sequelize.col('contestant_ratings.contestant_id')), {
                    [Op.lte]: 10
                  })

            })

相关问题