2013-08-06 50 views
1

我使用SQLite的工作,我已經創建了下面的select語句,給了我我需要的結果,現在如何讓他們在那裏我需要他們:轉換選擇到一個更新

SELECT 
    ii.Invoice_Item_Id, 
    pli.PRICE, 
    (pli.PRICE * ii.Qty) AS Sub_Total 
FROM 
    Invoice_Item ii 
    LEFT OUTER JOIN CS_PRICE_LIST_ITEM pli ON (ii.Product_Id = pli.Product_Id) 
    AND (pli.EVENT_PRICE_LIST_ID = 2) 
WHERE 
    ii.Invoice_Id = ? 

的Invoice_Item表有兩列:ii.Price,ii.Sub_Total。兩者都是NULL。目標是將它們設置爲此查詢的結果,其中ii.Price = pli.PRICE和ii.Sub_Total =(pli.PRICE * ii.Qty)。當然,我不想更新整個表格,只是針對給定的ii.Invoice_Id。我知道有一種非常有用的方法可以從select中進行插入,有沒有辦法用更新來做到這一點?如果是這樣,它是什麼樣子?

回答

1

SQLite中的update語句不支持join s。但是,您可以經常使用相關的子查詢來更新內容。以下可能是你正在尋找的:

update InvoiceItem 
    set Sub_Total = (select coalesce(ii.Sub_Total, coalesce(ii.Price, pli.PRICE) * ii.Qty) 
        FROM Invoice_Item ii LEFT OUTER JOIN 
          CS_PRICE_LIST_ITEM pli 
          ON ii.Product_Id = pli.Product_Id and 
          pli.EVENT_PRICE_LIST_ID = 2 
        WHERE ii.Invoice_Id = InvoiceItem.Invoice_Id 
        ); 
+0

謝謝,但我做了一個糟糕的工作提出這個問題。我剛回去編輯我的問題,以便更準確。如果你願意再看一眼,我將不勝感激! –