2017-02-01 3 views
0

からの結果をカウントすることで、表の更新、私は他のテーブルT2とT3からSQLクエリの結果をカウントすることにより、テーブルT1を更新しようとしています。は2別のテーブル

これは私が思い付いたが、動作していないようクエリされています

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ごとに1つのサイズの在庫を更新します。 T1.ParentSKUごとにすべてのサイズを更新する必要があります。 –

+0

@PierreS。あなたは実際にそれをテストしましたか?それともあなたは単に仮定していますか?おそらくあなたに実際のテーブル構造を見せてくれるでしょう。複数のサイズがある場合は、「ParentSKU、Size」の組み合わせごとに数えなければなりません。私は実際のクエリがあなたが提供したものと異なると思われる – Stephen

+0

あなたは正しいです、私は私のクエリで間違いを犯しました。あなたのソリューションは完璧でした。ありがとうございました。 –

関連する問題