Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Суммирование поля из двух записей / 5 сообщений из 5, страница 1 из 1
15.09.2017, 16:42
    #39521978
Alex-777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование поля из двух записей
Есть база студентов, у которой есть дочерние таблицы. Одного студента ввели два раза. Нужно слить две карточки в одну.
Со сменой id студента в дочерних таблицах проблемы нет, но нужно также подсуммировать баланс.
А тут у меня полный затык.

Пробовал разные варианты, но MySQL все равно ругается

Код: sql
1.
2.
UPDATE Students  
SET std_balance = (SELECT SUM(std_balance) FROM Students WHERE std_id = 5 or std_id = 7) WHERE std_id = 5;


You can't specify target table 'Students' for update in FROM clause

Код: sql
1.
2.
UPDATE Students s 
SET std_balance = (SELECT SUM(std_balance) FROM Students WHERE std_id = 5 or std_id = 7) WHERE s.std_id = 5;


You can't specify target table 's' for update in FROM clause

Код: sql
1.
2.
UPDATE Students  
SET std_balance = (SELECT SUM(s.std_balance) FROM Students s WHERE s.std_id = 5 or s.std_id = 7) WHERE s.std_id = 5;


You can't specify target table 'Students' for update in FROM clause

Пните в нужную сторону, кто знает.
...
Рейтинг: 0 / 0
15.09.2017, 17:40
    #39522010
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование поля из двух записей
Нужно использовать многотабличную форму UPDATE:
Код: sql
1.
2.
3.
4.
5.
6.
UPDATE Students, ( SELECT std_id , SUM(std_balance) std_balance 
                   FROM Students 
                   GROUP BY std_id
                 ) subquery
SET Students.std_balance = subquery.std_balance
WHERE Students.std_id = subquery.std_id
...
Рейтинг: 0 / 0
15.09.2017, 19:30
    #39522049
Alex-777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование поля из двух записей
Что-то торможу. Это же сгруппирует баланс по каждому id студента, а он и так один. Мне нужно слить баланс двух id в один.
...
Рейтинг: 0 / 0
16.09.2017, 14:40
    #39522199
Alex-777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование поля из двух записей
В конце концов дошел до запроса

Код: sql
1.
2.
3.
4.
5.
UPDATE Students A JOIN Students B ON B.std_id = 7
SET 
  A.std_balance = A.std_balance + B.std_balance
WHERE
  A.std_id = 5;



Вроде работает, но может есть какие подводные камни?
...
Рейтинг: 0 / 0
17.09.2017, 22:30
    #39522522
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование поля из двух записей
Alex-777Мне нужно слить баланс двух id в один.Найди поле или совокупность полей, которые уникальны для студента, и в то же время определяющие. И используй их для связи вместо WHERE Students.std_id = subquery.std_id и для группировки вместо GROUP BY std_id.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Суммирование поля из двух записей / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]