Создать запрос с включением (Sequelize) - PullRequest
0 голосов
/ 18 июня 2020

У меня две модели 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 выше?

...