【问题标题】:Create multiple INNER JOINS with Sequelize ORM使用 Sequelize ORM 创建多个 INNER JOINS
【发布时间】:2015-11-06 03:57:01
【问题描述】:

我正在将 Sequelize ORM 与 Node.js 一起使用,但我不知道如何使用它构建以下查询。

SELECT service.*, serviceCollection.*, client.companyName, client.idclient 
FROM service 
INNER JOIN serviceCollection 
ON service.serviceCollection_idserviceCollection = serviceCollection.idserviceCollection 
INNER JOIN client 
ON serviceCollection.client_idclient = client.idclient

当我在 phpMyAdmin 上尝试时,此查询可以正常运行。 复杂之处在于 Client 模型与 Service 没有直接关系,因此在尝试这样做时:

Service.findAll({include : [ServiceCollection, Client]}).then(function(service){
    if(service) {
        res.status(200).json(service);
    }
});

我收到以下错误:

Unhandled rejection Error: client is not associated to service!

我如何准备查询以从 serviceCollection 中的外键而不是原始模型中获取客户端信息 - service 。 我不能只在 client 上使用 include,因为它会给我错误,我需要以其他方式将它与此查询相关联,但我似乎无法在文档中找到解决方案。

【问题讨论】:

标签: javascript mysql node.js sequelize.js


【解决方案1】:

您是否在 servicecollection 和客户端之间建立了关系?在这种情况下,您可以这样做:

Service.findAll({
  include : [
    { 
      model: ServiceCollection, 
      required: true,
      include: [{model: Client, required: true }]}
  ]
});

required: true 创建内连接,默认为左连接

【讨论】:

  • 就是这样!我一定错过了文档中的语法。非常感谢
  • 嗨,我怎样才能用这个执行“where”条件?
猜你喜欢
  • 2022-09-28
  • 1970-01-01
  • 2016-10-02
  • 2018-07-02
  • 2012-06-13
  • 2021-09-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-28
相关资源
最近更新 更多