我有以下查询,我想在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',
],
],
});
我遇到的两个问题:
- 答:结果未正确排序 . 它们应该按数字顺序出现 . (它们以一组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查询返回的正确结果集
编辑:我将订单从DESC切换到ASC,然后我得到了数组
ASC: [ 354, 513, 1141, 1421, 533, 674, 678, 1187, 1720 ]
DESC: [ 1720, 1187, 678, 674, 533, 1421, 1141, 513, 354 ]