我有两个SQL表:ProductsCatalog
和OrdersCatalog
。
ProductsCatalog
:
id, barcode(unic), name, quantity
OrdersCatalog
:
id, barcode(non-unic), ordered
每种产品都可以订购几次。我需要编写单个SQL请求,返回ProductCatalog
的所有产品以及剩余产品的实际信息。
的伪代码:
products = SELECT (barcode,name,quantity) FROM ProductsCatalog;
foreach(product in products){
product.quantity -= SELECT sum(ordered) FROM OrdersCatalog WHERE barcode = product.barcode;
}
这是否可以仅使用没有服务器代码的SQL请求?这是否可以使用像Amazon dynamoDB这样的NoSQL数据库?
答案 0 :(得分:0)
你可以试试这个。 IFNULL在mysql中工作,SQL Server使用ISNULL函数。如果您返回任何错误,请对此进行评论,我会更正。我不能在这一刻尝试解决方案。
SELECT PC.barcode,
pc.name,
PC.quantity - Sum(Ifnull(OC.ordered, 0)) AS COLUMN_NAME
FROM productscatalog PC
LEFT JOIN orderscatalog OC
ON PC.barcode = OC.barcode
GROUP BY PC.barcode,
pc.name,
PC.quantity