mysql - 将 SQL 转换为 sequelize
问题描述
我是 Sequelize ORM 的新手。我想将 SQL 查询转换为 Sequelize 查询。
这是我的 SQL 查询,我想将此查询转换为 sequelize 查询:
SELECT [Angajat].[id], [Angajat].[grad], [Angajat].[nume], [Angajat].[prenume], [Angajat].[unitatea],
[Angajat].[incadrare], [Angajat].[id_structura], [Prezenta].[id] AS [Prezenta.id],
[Prezenta].[id_angajat] AS [Prezenta.id_angajat], [Prezenta].[data] AS [Prezenta.data],
[Prezenta].[de_la] AS [Prezenta.de_la], [Prezenta].[la] AS [Prezenta.la],
[Prezenta].[status] AS [Prezenta.status], [Prezenta].[introdusDe] AS [Prezenta.introdusDe],
[Prezenta->Calendar].[CalendarDate] AS [Prezenta.Calendar.CalendarDate],
[Prezenta->Calendar].[ZiLucratoare] AS [Prezenta.Calendar.ZiLucratoare],
[Prezenta->Calendar].[TipZiNelucratoare] AS [Prezenta.Calendar.TipZiNelucratoare],
[Prezenta->Recuperaris].[id] AS [Prezenta.Recuperaris.id],
[Prezenta->Recuperaris].[Id_Prezenta] AS [Prezenta.Recuperaris.Id_Prezenta],
[Prezenta->Recuperaris].[de_la] AS [Prezenta.Recuperaris.de_la],
[Prezenta->Recuperaris].[la] AS [Prezenta.Recuperaris.la],
[Prezenta->Recuperaris].[Data_Recuperata] AS [Prezenta.Recuperaris.Data_Recuperata]
FROM [Angajat] AS [Angajat] INNER JOIN [Prezenta] AS [Prezenta] ON [Angajat].[id] = [Prezenta].[id_angajat]
AND (month([data]) = N'05' AND year([data]) = N'2021') AND [Prezenta].[de_la] IS NOT NULL
INNER JOIN [Calendar] AS [Prezenta->Calendar] ON [Prezenta].[data] = [Prezenta->Calendar].[CalendarDate]
INNER JOIN [Recuperari] AS [Prezenta->Recuperaris] ON [Prezenta].[id] = [Prezenta->Recuperaris].[Id_Prezenta]
ORDER BY [Prezenta].[data] ASC;
我试过了,但结果不包括 INNER JOIN 日历
Angajat.findAll({
include: [
{
model: Prezenta,
where: {
de_la: { [Op.ne]: null },
[Op.and]: [
{
data: sequelize.where(
sequelize.fn("month", sequelize.col("data")),
"05"
)
},
{
data: sequelize.where(
sequelize.fn("year", sequelize.col("data")),
"2021"
)
}
]
},
include: [{ model: Calendar,required:true}],
include: [{ model: Recuperari,required:true}]
//
},
],
order: [[{ model: Prezenta }, "data", "ASC"]]
})
sequelize 控制台的结果是:
SELECT [Angajat].[id], [Angajat].[grad], [Angajat].[nume], [Angajat].[prenume],
[Angajat].[unitatea], [Angajat].[incadrare], [Angajat].[id_structura],
[Prezenta].[id] AS [Prezenta.id], [Prezenta].[id_angajat] AS [Prezenta.id_angajat],
[Prezenta].[data] AS [Prezenta.data], [Prezenta].[de_la] AS [Prezenta.de_la], [Prezenta].[la] AS [Prezenta.la], [Prezenta].[status] AS [Prezenta.status], [Prezenta].[introdusDe] AS [Prezenta.introdusDe], [Prezenta->Recuperaris].[id] AS [Prezenta.Recuperaris.id], [Prezenta->Recuperaris].[Id_Prezenta] AS [Prezenta.Recuperaris.Id_Prezenta],
[Prezenta->Recuperaris].[de_la] AS [Prezenta.Recuperaris.de_la], [Prezenta->Recuperaris].[la] AS [Prezenta.Recuperaris.la], [Prezenta->Recuperaris].[Data_Recuperata] AS [Prezenta.Recuperaris.Data_Recuperata] FROM [Angajat]
AS [Angajat]
INNER JOIN [Prezenta] AS [Prezenta] ON [Angajat].[id] = [Prezenta].[id_angajat]
AND (month([data]) = N'05' AND year([data]) = N'2021') AND [Prezenta].[de_la] IS NOT NULL
INNER JOIN [Recuperari] AS [Prezenta->Recuperaris] ON [Prezenta].[id] = [Prezenta->Recuperaris].[Id_Prezenta] ORDER BY [Prezenta].[data] ASC;
我想将 SQL 查询转换为 Sequelize 查询。
解决方案
推荐阅读
- javascript - VueJS为循环中的元素切换真/假?
- python - 我想比较 3 个 CSV 文件中的 1 列
- php - 需要帮助使用加密将加密 Blowfish php 转换为 Nodejs
- python - 有没有办法在烧瓶中捕获用于 HTTP 错误的路由?
- mysql - 如何有效地查询数据库中与基于联接表的过滤器匹配的所有行?
- javascript - 在 GTM 中用 Javascript 替换 html 内容
- php - Yii2 控制器动作未接收参数
- windows - Windows 批处理匹配字符串
- firebase - 您的连接不是私有的,无法访问 Firebase 存储文件
- python-3.x - 如何使用 Beautifulsoup 收集 Instagram 图片的所有喜欢的用户名