我有以下查询,我想在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。该 statusID是[1720,1187,678,533]为第一个联盟Id和[1421, 1141,513,354]为第二个LeagueID。它并没有汇集所有这些 一起整理。
使用上面的原始SQL QUERY为我提供了正确的结果集。
B:来自联盟ID 589的statusIds未包含在结果中 我使用sequelize时设置。
编辑:我将订单从DESC切换到ASC,然后我得到了数组
ASC: [ 354, 513, 1141, 1421, 533, 674, 678, 1187, 1720 ]
DESC: [ 1720, 1187, 678, 674, 533, 1421, 1141, 513, 354 ]