powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Суммирование поля из двух записей
5 сообщений из 5, страница 1 из 1
Суммирование поля из двух записей
    #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
Суммирование поля из двух записей
    #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
Суммирование поля из двух записей
    #39522049
Alex-777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то торможу. Это же сгруппирует баланс по каждому id студента, а он и так один. Мне нужно слить баланс двух id в один.
...
Рейтинг: 0 / 0
Суммирование поля из двух записей
    #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
Суммирование поля из двух записей
    #39522522
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex-777Мне нужно слить баланс двух id в один.Найди поле или совокупность полей, которые уникальны для студента, и в то же время определяющие. И используй их для связи вместо WHERE Students.std_id = subquery.std_id и для группировки вместо GROUP BY std_id.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Суммирование поля из двух записей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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