2017-02-01 3 views
0

Я пытаюсь обновить таблицу T1, посчитав результаты SQL-запроса из других таблиц T2 и T3.Обновление таблицы путем подсчета результатов из другой таблицы

Это запрос, я придумал, но это не похоже на работу:

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) 
       ) 

То, что я пытаюсь сделать, это обновить T1 путем подсчета результатов Т2 и группирования различных размеров от T3.

+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

Спасибо, однако этот запрос обновляет запас всего за 1 размер за T1.ParentSKU. Мне нужно обновить все размеры за T1.ParentSKU. –

+0

@PierreS. Вы действительно протестировали его, или вы просто предполагаете? возможно, покажите нам, какая у вас реальная структура таблицы. если у вас несколько размеров, вы должны рассчитывать на комбинацию ParentSKU, Size. Я подозреваю, что вы фактический запрос отличается от того, что вы предоставили – Stephen

+0

Вы правы, я допустил ошибку в своем запросе. Решение было совершенным. Еще раз спасибо. –

Смежные вопросы