Javascript 续写多个左连接
我有Javascript 续写多个左连接,javascript,mysql,sql,sequelize.js,erp,Javascript,Mysql,Sql,Sequelize.js,Erp,我有产品,qtyProducts,订单和订单产品表格 我想得到SUM(qtyBuyedProducts)和SUM(qtySelledProducts) SQL中的真值查询是(两个左连接): 我在Sequelize中尝试过: product.findAll( { group:'id', include: [ { model: qtyProduct, attributes: [[sequelize.fn('SUM', sequeliz
产品
,qtyProducts
,订单
和订单产品
表格
我想得到SUM(qtyBuyedProducts)
和SUM(qtySelledProducts)
SQL中的真值查询是(两个左连接):
我在Sequelize中尝试过:
product.findAll(
{
group:'id',
include: [
{
model: qtyProduct,
attributes: [[sequelize.fn('SUM', sequelize.col('qty')),'qty_buyed']],
required: false
},
{
model: ProductOrder,
attributes: [[sequelize.fn('SUM', sequelize.col('qty')),'qty_selled']],
required: false
}
]
})
但我犯了个错误
请帮帮我
我从“邮递员”那里得到了这个错误
{
"name": "SequelizeDatabaseError",
"parent": {
"code": "ER_NON_UNIQ_ERROR",
"errno": 1052,
"sqlState": "23000",
"sqlMessage": "Column 'qty' in field list is ambiguous",
"sql": "SELECT `product`.`id`, `product`.`code`, `product`.`name`, `product`.`nameAr`, `product`.`description`, `product`.`unitPriceBuy`, `product`.`warningQty`, `product`.`createdAt`, `product`.`updatedAt`, `qtyProducts`.`id` AS `qtyProducts.id`, SUM(`qty`) AS `qtyProducts.qty_buyed`, `ProductOrders`.`invoiceBuyedId` AS `ProductOrders.invoiceBuyedId`, `ProductOrders`.`productId` AS `ProductOrders.productId`, SUM(`qty`) AS `ProductOrders.qty_selled` FROM `products` AS `product` LEFT OUTER JOIN `qtyProducts` AS `qtyProducts` ON `product`.`id` = `qtyProducts`.`productId` LEFT OUTER JOIN `ProductOrders` AS `ProductOrders` ON `product`.`id` = `ProductOrders`.`productId` GROUP BY `id`;"
},
"original": {
"code": "ER_NON_UNIQ_ERROR",
"errno": 1052,
"sqlState": "23000",
"sqlMessage": "Column 'qty' in field list is ambiguous",
"sql": "SELECT `product`.`id`, `product`.`code`, `product`.`name`, `product`.`nameAr`, `product`.`description`, `product`.`unitPriceBuy`, `product`.`warningQty`, `product`.`createdAt`, `product`.`updatedAt`, `qtyProducts`.`id` AS `qtyProducts.id`, SUM(`qty`) AS `qtyProducts.qty_buyed`, `ProductOrders`.`invoiceBuyedId` AS `ProductOrders.invoiceBuyedId`, `ProductOrders`.`productId` AS `ProductOrders.productId`, SUM(`qty`) AS `ProductOrders.qty_selled` FROM `products` AS `product` LEFT OUTER JOIN `qtyProducts` AS `qtyProducts` ON `product`.`id` = `qtyProducts`.`productId` LEFT OUTER JOIN `ProductOrders` AS `ProductOrders` ON `product`.`id` = `ProductOrders`.`productId` GROUP BY `id`;"
},
"sql": "SELECT `product`.`id`, `product`.`code`, `product`.`name`, `product`.`nameAr`, `product`.`description`, `product`.`unitPriceBuy`, `product`.`warningQty`, `product`.`createdAt`, `product`.`updatedAt`, `qtyProducts`.`id` AS `qtyProducts.id`, SUM(`qty`) AS `qtyProducts.qty_buyed`, `ProductOrders`.`invoiceBuyedId` AS `ProductOrders.invoiceBuyedId`, `ProductOrders`.`productId` AS `ProductOrders.productId`, SUM(`qty`) AS `ProductOrders.qty_selled` FROM `products` AS `product` LEFT OUTER JOIN `qtyProducts` AS `qtyProducts` ON `product`.`id` = `qtyProducts`.`productId` LEFT OUTER JOIN `ProductOrders` AS `ProductOrders` ON `product`.`id` = `ProductOrders`.`productId` GROUP BY `id`;"
}尝试将查询更改为使用嵌套的SELECT,我认为使用grioup by的左连接可能是问题的原因,因为
qtyProducts
和ProductOrders
SELECT
products.code,
COALESCE(
(
SELECT
SUM(qty)
FROM
qtyProducts
WHERE
productId = products.id
)
, 0) AS qty_selled,
COALESCE(
(
SELECT
SUM(qty)
FROM
ProductOrders
WHERE
productId = products.id
)
, 0) AS qty_buyed
FROM
products
GROUP BY
products.id
“但是我得到一个错误”您可以分享这个错误吗?我得到了这个错误消息
“sqlMessage”:“字段列表中的'qty'列不明确”
什么错误?你可以编辑这个问题来包含错误,而不是把它放在评论里吗?我编辑这个帖子谢谢你,这是正确的,有人能把它翻译成续集吗
SELECT
products.code,
COALESCE(
(
SELECT
SUM(qty)
FROM
qtyProducts
WHERE
productId = products.id
)
, 0) AS qty_selled,
COALESCE(
(
SELECT
SUM(qty)
FROM
ProductOrders
WHERE
productId = products.id
)
, 0) AS qty_buyed
FROM
products
GROUP BY
products.id