我有以下查询,我想在Sequelize中重新生成但我没有得到正确的结果 .

SQL QUERY:

select distinct s.CreatedDate, s.statusID from tblMember m
join tblMemberAlias ma on m.MemberID = ma.MemberID
join tblLeagueDivisionSessionTeamMemberAlias tma on tma.MemberAliasID = 
ma.memberAliasID
join tblLeague l on ma.leagueNumber = l.leagueNumber
join tblStatus s on s.leagueID = l.leagueID
where m.memberID = 2187148 or s.leagueID = 589 and s.isActive = 1 order by 
s.createdDate desc;

SEQUELIZE:

return this.model.findAll({
      attributes: ['memberId'],
      include: [
        {
          model: models.tblMemberAlias,
          attributes: ['memberAliasId'],
          on: {
            leagueNumber: Sequelize.where(
              Sequelize.col('tblMember.MemberID'),
              '=',
              Sequelize.col('aliases.MemberID')
            ),
          },
          as: 'aliases',
          include: [
            {
              model: models.tblLeague,
              on: {
                leagueNumber: Sequelize.where(
                  Sequelize.col('aliases.Leaguenumber'),
                  '=',
                  Sequelize.col('[aliases->league].[LeagueNumber]')
                ),
              },
              as: 'league',
              // required: true,
              attributes: ['leagueId', 'leagueNumber'],
              where: { terminationDate: null },
              include: [
                {
                  model: models.tblStatus,
                  as: 'status',
                  attributes: ['statusId', 'createdDate'],
                },
              ],
            },
          ],
        },
      ],
      where: Sequelize.literal(
        `[tblMember].[MemberID] = ${ids} or [aliases->league->status].leagueID = 589 and [aliases->league->status].statusId = 1`
      ),
      order: [
        [
          { model: models.tblMemberAlias, as: 'aliases' },
          { model: models.tblLeague, as: 'league' },
          { model: models.tblStatus, as: 'status' },
          'createdDate',
          'DESC',
        ],
      ],
    });

sequelize query results

我遇到的两个问题:

  • 答:结果未正确排序 . 它们应该按数字顺序出现 . (它们以一组int而不是对象的形式返回,因为我们在repo上有一个从对象中提取单个值的函数,它不会影响顺序)*在这个集合中有两个与memberID关联的联盟号码,它然后在下一次加入中拉出每个联盟ID的statusID . 第一个联盟ID的状态ID是[1720,1187,678,533],第二个联盟ID的状态ID是[1421,1141,513,354] . 它不是将它们汇集在一起并进行排序 .

使用上面的原始SQL QUERY为我提供了正确的结果集 .

  • B:来自leagueID 589的statusIds未包含在结果中
    当我使用sequelize时设置 .

这是从sqlStudio中的sql查询返回的正确结果集

queryResults

编辑:我将订单从DESC切换到ASC,然后我得到了数组

ASC: [ 354, 513, 1141, 1421, 533, 674, 678, 1187, 1720 ]
 DESC: [ 1720, 1187, 678, 674, 533, 1421, 1141, 513, 354 ]