2017-02-01 44 views
0

我試圖通過從其他表T2和T3中計算SQL查詢的結果來更新表T1。通過從另一個表中計數結果更新表

這是我想出了查詢,但它似乎沒有工作:

UPDATE T1 
set Stock = 
(SELECT count(ID_Item) 
       FROM T2,T3 
       WHERE T2.ID_Product = T1.ParentSKU AND 
      T3.ID = T2.ID_Product AND 
      Stock_Items.Name = '' AND 
      Stock_Items.Returned = '' 

     GROUP BY(T3.Size) 
       ) 

我所試圖做的是通過計算從T2結果及T3分組不同的尺寸,以更新T1。

+1

MySQL或SQL服務器刪除嗎? – GurV

+1

什麼似乎沒有工作?你有什麼錯誤嗎? – davejal

+0

它是一個mysql服務器 –

回答

0

您需要刪除GROUP BY,如果您的項目具有多個尺寸,您的子查詢將返回多個結果,並且更新將失敗。

UPDATE T1 
set Stock = 
(SELECT count(ID_Item) 
       FROM T2 INNER JOIN T3 
       WHERE T2.ID_Product = T1.ParentSKU AND 
      T3.ID = T2.ID_Product AND 
      Stock_Items.Name = '' AND 
      Stock_Items.Returned = '' AND 
      T3.Size = T1.Size 
       ) 

如果大小不是一個因素,那麼完全從子查詢

+0

然而,謝謝你這個查詢更新每個T1.ParentSKU只有一個大小的庫存。我需要它來更新每個T1.ParentSKU的所有大小。 –

+0

@PierreS。你真的測試過它,還是隻是假設?或許向我們展示你真正的餐桌結構。如果您有多個尺寸,則必須按照「ParentSKU,尺寸」組合進行計數。我懷疑你的實際查詢與你提供的不同 – Stephen

+0

你是對的,我在查詢中犯了一個錯誤。你的解決方案很完美。再次感謝你。 –

相關問題