首页 > 解决方案 > 将 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 查询。

标签: mysqlexpresssequelize.js

解决方案


推荐阅读