У меня две модели Project
и Version
. Project
имеет PK - projectId
. Version
имеет PK - versionId
и столбец projectId
. Я хочу создать запрос с Sequelize следующим образом SQL:
SELECT * FROM projects
LEFT JOIN (
SELECT projectId, MAX(updatedTime) AS modifiedTime FROM versions
GROUP BY projectId
) last_modified
USING(projectId)
LEFT JOIN (SELECT projectId, updatedTime, editor FROM versions) last_modified_user
ON last_modified_user.projectId = projects.projectId
AND last_modified_user.updatedTime = last_modified.modifiedTime
Shema: Models chema
Я написал ассоциацию и начал создавать запрос:
Project.hasMany(Version, {
foreignKey: 'projectId',
sourceKey: 'projectId',
as: 'relatedVersion'
})
const project = async () => {
const results = await Project.findAll({
attributes: ['projectId', .....other column from Project]
raw: true,
include: [
{
attributes: [[Sequelize.fn('max', Sequelize.col('relatedVersion.updatedTime')),'modifiedTime']]
required: false,
model: Version,
as: 'relatedVersion'
}
]
// should the second join be here?
group: ['relatedVersion.versionId','project.projectId']
})
, а затем я застрял.
Почему Sequelize нужно сгруппировать столбец versionId
? Никогда не использую. И как я могу написать запрос с Sequelize, как с SQL выше?