【问题标题】:Trying to write an 'or' query that depends on two different joined tables尝试编写一个依赖于两个不同连接表的“或”查询
【发布时间】:2019-05-12 07:26:53
【问题描述】:

我需要使用 Sequelize 在 PostgreSQL 数据库中选择一些行,其中一个 id 存在于连接表 1 中,或者它存在于连接表 2 中。

使用 Sequelize 我尝试在“包含”中查询连接的表,但意识到在某些情况下,如果 id 不存在,那么该表将从结果行中排除,这不是我想要的。我认为我想要的更像是以下内容:

Model.findAll({
  include: [ Association1, Association2 ],
  where: { [Op.or]: [
    { 'Association1.ModelId': id },
    { 'Association2.ModelId': id }
  ]}
})

代码实际上产生了一个错误,指出 Model.Assocation1.ModelId 不存在。我不确定我应该如何完成上面的代码示例。

【问题讨论】:

    标签: javascript sql node.js postgresql sequelize.js


    【解决方案1】:

    在纯 SQL 中,这将是一个 OUTER JOIN 案例。

    在 Sequelize 中,你可能需要添加

    required: false
    

    …到你的参数。

    【讨论】:

    • 不幸的是,这不是我需要的解决方案。我之前使用外连接,但外连接的组合不起作用。我是否需要将外连接与上面的 where 子句结合使用?连接表本身的 Where 子句不会产生结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 2013-01-16
    相关资源
    最近更新 更多