簡體   English   中英

內部連接在同一張桌子上

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM