2015-12-04 88 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

相關問題