我有三个表:“产品”,“购买”,“发票”
产品表 : Producct_no听名字 1引用 2听B 3引用C
采购表 : purchase_no听产品_no数量 001引用1听81 002引用150 003引用3引用10
发票表 : Invoice_no听产品_no数量 001引用1引用20 002引用10 003引用3引用10
我想获取每种产品的购买数量和发票数量,我使用以下查询
选择PR.product_no,sum(P.qty),sum(I.qty) 从产品公关 左加入发票I ON I.product_no = PR.product_no LEFT JOIN购买P ON P.product_no = PR.product_no 按PR.product_no分组
product_no听sum(P.qty)sum(I.qty) 001引用162听160 002引用150引用50 003听10引用10
编辑:预期的结果 product_no听取sum(P.qty)sum(I.qty) 001引用81听20 002引用150引用10 003听10引用10
我的查询给我错误的答复(数量总和是错误的),请帮助我更正我的查询以正确获得结果。谢谢
根据提供的信息,我认为您的样本数据并不是您真正拥有的。我最好的猜测是,您的查询正在对这两个连接中的一个或两个进行扇出操作,这会使您的总和混乱。您需要分别对它们进行求和,否则,那些联接中的任何一个联接上的其他行都会扇出另一个联接,从而使总和中的结果重复。这在您的结果中很明显,因为001看起来是两倍(即使您的示例数据没有显示它)。
这样的事情将确保总和彼此独立:
SELECT PR.product_no, ( SELECT sum(I.qty) FROM invoice I WHERE I.product_no=PR.product_no ) invoice_qty, ( SELECT sum(P.qty) FROM purchase P WHERE P.product_no=PR.product_no ) purchase_qty FROM products PR