【发布时间】:2018-08-06 19:49:31
【问题描述】:
我正在尝试加入三个表 Organization_entries 和 users 和 user_invoices,我在 sql 中有这样的查询
select users.id ,users.name,users.email, users.mobile, sum(user_invoices.due_amount) ,
organization_entries.id, organization_entries.created_at
from users
INNER JOIN user_invoices ON users.id = user_invoices.customer_id
INNER JOIN organization_entries on users.id = organization_entries.user_id
GROUP BY users.id, organization_entries.id
ORDER BY organization_entries.created_at DESC;
这个查询工作正常,给了我想要的结果,但是当我尝试使用 Sequelize libaray 转换这个查询时,我无法理解如何在 sequelize library 中转换这个查询。
我在 Sequelize 中尝试过类似的东西
db.users
.findAll({
where: condition,
duplicating: false,
attributes: [
'id',
'name',
'email',
'mobile',
'mobileAlternate',
'image',
'gender',
'dob',
'status',
[
db.sequelize.fn(
'SUM',
db.sequelize.col('userInvoices.due_amount')
),
'dueAmount'
],
],
include: [
{
model: db.userInvoices,
attributes: ['dueAmount'],
},
{
model: db.organizationEntries,
attributes: ['id', 'fromDate', 'status', 'createdAt'],
required: true,
where: playerCondition,
duplicating: false
},
],
group: ['users.id', 'organizationEntries.id'],
order: [['organizationEntries', 'createdAt', 'DESC']],
offset: pageCondition.startRecord,
limit: pageCondition.endRecord
})
但它给了我这个错误
"'字段列表'中的未知列'userInvoices.due_amount'",
这是生成的查询
"SELECT users.* FROM (SELECT users.id, users.name, users.email, users.mobile, @987654@.@3 987654333@ AS mobileAlternate, users.image, users.gender, SUM(userInvoices.due_amount) AS amount, dob.@987654343, @.@8 status FROM users AS users WHERE(users.deleted_at > '2018-02-27 15:22:30' 或 users.deleted_at 为 NULL)GROUP BY @9876543 id,organizationEntries 987654355 @ limit 0,20000)AS users左外连接user_invoices 987654358 @ users 987654360 userInvoices 987654362 @和(customer_id.deleted_at > '2018-02-27 15:22:30' 或 userInvoices.deleted_at 为空)
谁能给我一些提示如何在 Sequelize 中编写此查询。
【问题讨论】:
标签: mysql node.js express sequelize.js