SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 15.10.2016 19:06:00

pawana
Участник
Зарегистрирован: 11.04.2015
Сообщений: 14

Суммировать значения по условию

Здравствуйте!

Имеется 2 таблицы. Нужно сделать выборку в одной таблице, просуммировать значения с одинаковыми id и записать эти значения в другую бд в поле с тем же id.

таблица 1 `goods`

id   name   quantity
----------------------
1   aaa
2   bbb
3   ccc
4   ddd
5   eee

таблица 2 `sales`

id   name   sls   stat
-------------------
1    aaa     1     new
2    bbb     2     old
3    aaa     2     new
4    ccc     1     new
5    bbb    1     new
6    aaa    2     new
7    bbb    3     old

Нужно просуммировать значения для поля sls для ааа, bbb, ccc из таблицы sales и записать полученные значения в поле quantity в таблице goods c проверкой по id и stat.

Я делаю такой запрос:
update goods t1, (
    select `id`, `name`, `sls` from sales
) t2
set t1.`quantity` = sum(t2.`sls`) where t1.`id` =t2.`id` and t2.`stat`="new"

Тут изначально есть ошибка c where, но сделать правильно не хватает мозгов.

Помогите кто чем может smile.

Неактивен

 

#2 15.10.2016 19:17:34

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5829

Re: Суммировать значения по условию

не очень понятно, что нужно
какой должен быть результат после обновления для приведенных данных?

Неактивен

 

#3 15.10.2016 19:44:41

pawana
Участник
Зарегистрирован: 11.04.2015
Сообщений: 14

Re: Суммировать значения по условию

vasya написал:

не очень понятно, что нужно
какой должен быть результат после обновления для приведенных данных?

Если человеческим языком, то таблица sales это таблица продаж интернет-магазина. В нее пишется ид товара, и кол-во проданного. Товары в таблице периодически повторяются. Мне нужно просуммировать продажи для каждого товара из этой таблицы и результат суммирования записать в таблицу goods дополнительно проверив их по значению поля stat.

таблица 1 `goods`

id   name   quantity
----------------------
1   aaa
2   bbb
3   ccc
4   ddd
5   eee

таблица 2 `sales`

id   name   sls   stat
-------------------
1    aaa     1     new
2    bbb     2     old
3    aaa     2     new
4    ccc     1     new
5    bbb    1     new
6    aaa    2     new
7    bbb    3     old

Результат должет быть такой

id   name   quantity
----------------------
1   aaa       5
2   bbb       1 (так как у двух bbb поле stat имеет значение old
3   ccc        1
4   ddd       0
5   eee       0

Неактивен

 

#4 15.10.2016 19:50:23

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5829

Re: Суммировать значения по условию

update goods t1, (
    select `name`, sum(`sls`) as q from sales where `stat`="new" group by name
) t2
set t1.`quantity` = t2.q where t1.name =t2.name;

Неактивен

 

#5 15.10.2016 20:02:13

pawana
Участник
Зарегистрирован: 11.04.2015
Сообщений: 14

Re: Суммировать значения по условию

Ура, работает! smile

Блин, второй раз пишу на форум и второй раз мне помогаете Вы - спасибо вам огроменное!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson