最多一条记录可以通过MS Access中的子查询返回 [英] At most one record can return by sub query in MS Access

查看:146
本文介绍了最多一条记录可以通过MS Access中的子查询返回的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要从产品到达剩余库存。我有3个表产品,已售出,已收到产品



ProductStock表

Hi, I need to arrive Remaining Stock from products. I have 3 Tables Product, Sold, ReceivedProducts

ProductStock Table

ProductId   ProductName  InitialQuantity
1           Mobile       50
2           Charger      30
3           Torch Light  50
4           Laptop       40      





ReceivedProducts表

Product(Product Id)    ReceivedQty
2                      20
2                      5





已售出的表

ItemId   Quantity   Amount
4         3         90,000
1         10        5,000



现在我需要剩余的股票((初始数量+收到数量) - 卖出数量

所以我尝试了这个查询加入初始数量和收到数量,但得到的错误像最多一条记录可以通过子查询返回

SELECT ProductId, InitialStock, 
(SELECT ReceivedQty FROM ReceivedProducts WHERE Product=ProductStock.ProductId) AS ReceivedStock FROM ProductStock;





以下查询工作但只获得一个产品,因为收到的产品是两次同样如此。如果收到的数量不可用,我需要添加初始库存。如何形成查询?

(初始数量+收到数量)

SELECT ProductId, 
InitialStock+SUM(ReceivedQty) AS TotalQty 
FROM ProductStock AS PSD INNER JOIN ReceivedProducts AS RP ON PSD.ProductId=RP.Product
GROUP BY PSD.ProductId,InitialStock;

帮我解决这个问题



提前致谢

Sri

Help me to solve this

Thanks in advance
Sri

推荐答案





你只得到一个产品因为你正在使用 INNER JOIN 。所以请改用 LEFT JOIN 。此外,您需要将 NULL 值替换为 0 。您的查询应如下所示:

Hi,

You're getting only one product because you're using INNER JOIN. So use LEFT JOIN instead. Also, you need to replace NULL values with 0. Your query should be like this:
SELECT ProductId, IIF(InitialStock IS NULL, 0, InitialStock) + SUM(IIF(ReceivedQty IS NULL, 0, ReceivedQty)) AS TotalQty
FROM ProductStock AS PSD LEFT JOIN ReceivedProducts AS RP ON PSD.ProductId = RP.Product
GROUP BY PSD.ProductId, InitialStock;



请告诉我它的工作原理。


Please let me know how it works.


这篇关于最多一条记录可以通过MS Access中的子查询返回的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆