[英]Inner Join on Same Table Sequelize
我已经编写了一个SQL查询,并试图使其适应Sequelize,但无法弄清楚如何在同一张表上创建关联。 这是SQL:
SELECT t1.*
FROM `configurations` t1
INNER JOIN
(
SELECT max(configuration_start) maxConfigStart, pb_id
FROM `configurations`
WHERE
active = 1
AND DATE(configuration_start) <= DATE(NOW())
GROUP BY `pb_id`
) t2
ON t1.`pb_id` = t2.`pb_id`
AND t1.`configuration_start` = t2.`maxConfigStart`
WHERE t1.`active` = 1
ORDER BY t1.`configuration_start` DESC
这是模型定义:
configurations = sequelize.define 'configurations', {
id:
type: Sequelize.INTEGER
primaryKey: true
autoIncrement: true
configuration_name: Sequelize.STRING
configuration_start: Sequelize.DATE
configuration_end: Sequelize.DATE
created: Sequelize.DATE
updated: Sequelize.DATE
}, {
timestamps: false,
scopes: {
currentConfigTimes: {
attributes: ['pb_id', [sequelize.fn('max', sequelize.col('configuration_start')), 'configuration_start']]
where:
active: 1
configuration_start:
lte: new Date()
group: ['pb_id']
},
currentConfigIds: {
attributes: ['pb_id', 'configuration_start', 'id']
where:
active: 1
configuration_start:
lte: new Date()
order: [['configuration_start', 'DESC']]
}
}
}
有人可以提供的任何帮助将不胜感激。 本质上,我正在尝试获取每个pb_id
最新过去配置。 也许有更好的方法吗?
看来当前使用Sequelize实际上是不可能的。 在花费大量时间阅读他们的文档以尝试了解最佳方法之后,我遇到了这个Github问题,试图解决完全相同的问题。 最好的解决方案是此时使用原始查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.