Sequelize.js - 在join子句中进行subselect

时间:2017-12-19 19:54:38

标签: javascript sql node.js sequelize.js

我有两个表 - customerorder,一对多关系。我想在一个查询中检索所有客户数据和他的订单的总价值。

在原始SQL中可能是这样的:

select customer.*, o.total from customer 
  inner join (select sum(value) as total, customer_id from 
      order group by customer_id) as o 
  on customer.id=i.customer_id

我的问题是 - 如何在没有编写SQL的情况下在Sequelize中表达此查询?这甚至可能吗?

2 个答案:

答案 0 :(得分:0)

您好xersee首先要创建两个表customer和sequalize.js格式的订单 然后在从表顺序求值列和customer_id列之后将其放入一个表中 然后,在ORM Style中加入带有customer表的新表 请参考以下链接,它可能对您有所帮助。 How to make join querys using sequelize in nodejs

答案 1 :(得分:0)

尝试一下:

const query = `
  SELECT
    table_a.table_a_id AS "table_a.table_a_id",
    table_b.table_b_id AS "table_b.table_b_id"
  FROM 
    table_a
  LEFT JOIN
    (SELECT * FROM table_b) AS table_b
  ON
    table_a.table_b_id = table_b.table_b_id
`;

const options = {
  model: models.table_a,
  mapToModel: true,
  nest: true,
  raw: true,
  type: sequelize.QueryTypes.SELECT
};

let tableAs = await db.sequelize.query(query, options);

请注意,在select语句中需要别名。似乎Sequelize.js通过名称中的点来区分表。

结果与模型得到的结果并不完全相同。