2015-12-04 61 views
1

我在这里遇到了一些SQLite语法麻烦的问题,如果有人能指引我走上正确的道路,我会很喜欢它。基于另一个字段的总和更新SQLite布尔字段

基本上:我试图根据另一个表(Items.Qty)中字段的总和来更新一个表(MasterItems.InStock)中的布尔字段,具体取决于Items表中Qty的总数是> 0或不。

我可以先做到在两个语句:

UPDATE MasterItems 
    SET InStock = 0 WHERE InStock <> 0; 

UPDATE MasterItems 
    SET InStock = 1 
    WHERE ProductNumber IN 
     (SELECT ProductNumber FROM Items 
     GROUP BY Items 
     HAVING SUM(Qty)> 0); 

但我知道必须有一个办法做到这一点在一条语句...

回答

0

布尔表达式,如“x > 0”,返回0或1,所以你可以直接使用它。 要用每个值更新每一行,请使用correlated subquery。当一个项目没有行时得到一个零,用空格替换NULL ifnull()

UPDATE MasterItems 
SET InStock = (SELECT IFNULL(SUM(Qty), 0) 
       FROM Items 
       WHERE ProductNumber = MasterItems.ProductNumber 
      ) > 0; 
+0

完美地工作。非常感谢! – pbickford

相关问题