SQL交叉表SELECT sum()用于另一个SELECT中的每个项目

时间:2013-12-27 10:31:30

标签: sql

我有两个SQL表:ProductsCatalogOrdersCatalog

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数据库?

1 个答案:

答案 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