[英]I have a problem with a one-to-many associated left outer join in sequelize.js
生成的代碼最終類似於 LEFT OUTER JOIN ... ON tableA.id = tableB.headerId。 它應該是 tableA.headerId = tableB.headerId。
這是我目前擁有的代碼:
models.SalesOrdersLine.hasOne(models.SalesOrdersHeader, {
foreignKey: 'salesOrderHeaderId',
targetKey: 'salesOrderHeaderId'
});
let data = (await models.SalesOrdersLine.findAll({
attributes:[
'branchName',
['createdByName', 'salesPerson'],
[Sequelize.fn('count',
Sequelize.fn('distinct',
Sequelize.col('SalesOrdersLine.salesOrderHeaderId')
)
), 'uniqueTransactions'],
[Sequelize.fn('count', Sequelize.col('*')), 'uniqueProducts'],
[Sequelize.fn('sum', Sequelize.col('SalesOrdersLine.newSales')), 'sales'],
[Sequelize.literal('sum(SalesOrdersLine.newSales) / 1.1'), 'salesExclGst'],
[Sequelize.fn('sum', Sequelize.col('SalesOrdersLine.qty')), 'quantity'],
[Sequelize.fn('sum', Sequelize.col('SalesOrdersLine.qtyShipped')), 'quantityShipped'],
[Sequelize.literal('CASE WHEN COUNT(DISTINCT(SalesOrdersLine.salesOrderHeaderId)) = 0 THEN 0 ELSE COUNT(*)/COUNT(DISTINCT(SalesOrdersLine.salesOrderHeaderId)) END'), 'unitsPerTransaction'],
[Sequelize.literal('CASE WHEN COUNT(DISTINCT(SalesOrdersLine.salesOrderHeaderId)) = 0 THEN 0 ELSE SUM(SalesOrdersLine.newSales)/COUNT(DISTINCT(SalesOrdersLine.salesOrderHeaderId)) END'), 'aveTransactionValue'],
],
include: [{
attributes: [['paymentAmount', 'paymentAmount']],
model: models.SalesOrdersHeader,
}],
group : ['salesPerson'],
order: Sequelize.literal('sales DESC'),
where: whereObj,
logging: console.log,
raw: true,
}));
models.SalesOrdersLine.hasOne(models.SalesOrdersHeader, {
foreignKey: 'salesOrderHeaderId',
sourceKey: 'salesOrderHeaderId'
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.