我正在尝试加入三个表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库中转换此查询 .
我在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
})
但它给了我这个错误
"Unknown column 'userInvoices.due_amount' in 'field list'",
这是生成的查询
“选择 users
. * FROM(SELECT users
. id
, users
. name
, users
. email
, users
. mobile
, users
. mobile_alternate
AS mobileAlternate
, users
. image
, users
. gender
,SUM( userInvoices
. due_amount
)AS amount
, users
. dob
, users
. status
FROM users
AS users
WHERE( users
. deleted_at
> '2018-02-27 15:22:30' OR users
. deleted_at
IS NULL)GROUP BY users
. id
, organizationEntries
. id
LIMIT 0,20000)AS users
LEFT OUTER JOIN user_invoices
AS userInvoices
ON users
. id
= userInvoices
. customer_id
AND( userInvoices
. deleted_at
> '2018-02-27 15:22:30'或 userInvoices
. deleted_at
IS NULL)
任何人都可以给我一些提示如何在Sequelize中写这个查询 .
1 回答
更改
至 :