powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / UPDATE и GROUP BY
14 сообщений из 14, страница 1 из 1
UPDATE и GROUP BY
    #36238427
minton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как правильно составить запрос такого типа?

Код: plaintext
1.
UPDATE spr,prd SET spr.analiz_abc_ves=sum(prd.sum_otp)
WHERE spr.ukod=prd.ukod GROUP BY prd.ukod
...
Рейтинг: 0 / 0
UPDATE и GROUP BY
    #36238497
Simpliest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никак.

Зачем тебе GROUP BY при апдейте?
...
Рейтинг: 0 / 0
UPDATE и GROUP BY
    #36238510
minton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне нужно результат
Код: plaintext
sum(prd.sum_otp) GROUP BY prd.ukod
присвоить колонке
Код: plaintext
spr.analiz_abc_ves

могу это сделать через временную таблицу, но может как-то одним запросом можно?
...
Рейтинг: 0 / 0
UPDATE и GROUP BY
    #36238525
Simpliest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
minton,

У UPDATE нет GROUP BY
так что только через подзапрос

примерно так
Код: plaintext
UPDATE table SET p= (SELECT SUM(p) FROM table WHERE n= 1  GROUP BY n)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
UPDATE и GROUP BY
    #38452503
naas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему не работает?
Код: sql
1.
2.
3.
4.
5.
6.
update phpbb3_users
	set user_posts=
		(select count(*)
		from phpbb3_posts
		where phpbb3_users.user_id=phpbb3_posts.poster_id
		group by poster_id)
...
Рейтинг: 0 / 0
UPDATE и GROUP BY
    #38452509
naas,

Молча не работает или выдает какую-то ошибку?
Но, первое что бросается в глаза - таблица используется дважды, но алиасы не назначены. На месте сервера я бы растерялся и не знал бы, какие поля из какой версии таблицы брать.
И второе. Может память мне изменяет, но почему-то помнилось, что нельзя использовать в качестве источника данных обновляемую таблицу.
...
Рейтинг: 0 / 0
UPDATE и GROUP BY
    #38452512
Добрый Э - Эх,

упс, плохо посмотрел -таблицы разные :)
...
Рейтинг: 0 / 0
UPDATE и GROUP BY
    #38452513
naas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ошибки нет, но модифицирует 0 строк.
Таблица вроде как дважды не используется: в where связь между обновляемой таблицей и таблицей с информацией.
Задача: корректно заполнить поле "количество постов" (phpbb3_users.user_posts), в соответствие с реальным их количеством (count(*) from phpbb3_posts group by poster_id)
...
Рейтинг: 0 / 0
UPDATE и GROUP BY
    #38452521
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
naasТаблица вроде как дважды не используетсяИспользуется. Потому что группировка. Для апдейта должна быть второй раз открыта негруппированная версия.

Перепиши на двутабличный апдейт с подзапросом.
...
Рейтинг: 0 / 0
UPDATE и GROUP BY
    #38452713
naas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
может что-то не так понял, но результат тот же...
Код: sql
1.
2.
3.
4.
5.
6.
7.
update phpbb3_users, phpbb3_posts p1
	set user_posts=
		(select count(*)
		from phpbb3_posts p2
		where phpbb3_users.user_id=p2.poster_id
		group by poster_id)
	where phpbb3_users.user_id=p1.poster_id
...
Рейтинг: 0 / 0
UPDATE и GROUP BY
    #38452744
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не так, не так... имелось в виду

Код: sql
1.
2.
3.
update table1, (select ... from table2) subquery
set table1... = subquery...
where table1... = subquery...
...
Рейтинг: 0 / 0
UPDATE и GROUP BY
    #38453200
naas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знал, что тут так можно, но результат по прежнему 0. Может опять что-то не так понял? Подзапрос работает корректно - выдает ид и количество.
Код: sql
1.
2.
3.
update phpbb3_users, (select count(*) cnt, poster_id from phpbb3_posts group by poster_id) post_cnt
	set phpbb3_users.user_posts=post_cnt.cnt
	where phpbb3_users.user_id=post_cnt.poster_id
...
Рейтинг: 0 / 0
UPDATE и GROUP BY
    #38453316
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
naasНе знал, что тут так можно
Ну маны вообще полезно почитывать, там много чего есть разного...

naasрезультат по прежнему 0
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
mysql> create table phpbb3_users(user_posts int,user_id int);
Query OK, 0 rows affected (0.28 sec)

mysql> insert into phpbb3_users(user_id) select 1 union select 2 union select 3;
Query OK, 3 rows affected (0.11 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> insert into phpbb3_users(user_id,user_posts) select 4,2;
Query OK, 1 row affected (0.03 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> select * from phpbb3_users;
+------------+---------+
| user_posts | user_id |
+------------+---------+
|       NULL |       1 |
|       NULL |       2 |
|       NULL |       3 |
|          2 |       4 |
+------------+---------+
4 rows in set (0.00 sec)

mysql> create table phpbb3_posts(poster_id int);
Query OK, 0 rows affected (0.34 sec)

mysql> insert into phpbb3_posts(poster_id) select 1 union all select 2 union all select 2 union all select 3 union all select 3 union all select 3 union all sel
ect 4 union all select 4 union all select 4 union all select 4;
Query OK, 10 rows affected (0.03 sec)
Records: 10  Duplicates: 0  Warnings: 0

mysql> select * from phpbb3_posts;
+-----------+
| poster_id |
+-----------+
|         1 |
|         2 |
|         2 |
|         3 |
|         3 |
|         3 |
|         4 |
|         4 |
|         4 |
|         4 |
+-----------+
10 rows in set (0.00 sec)

mysql> update phpbb3_users
    -> ,      (
    ->        select count(*) cnt
    -> ,             poster_id
    ->        from phpbb3_posts
    ->        group by poster_id
    ->        ) post_cnt
    -> set phpbb3_users.user_posts=post_cnt.cnt
    -> where phpbb3_users.user_id=post_cnt.poster_id;
Query OK, 4 rows affected (0.09 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> select * from phpbb3_users;
+------------+---------+
| user_posts | user_id |
+------------+---------+
|          1 |       1 |
|          2 |       2 |
|          3 |       3 |
|          4 |       4 |
+------------+---------+
4 rows in set (0.00 sec)

mysql>

Выпрямляй руки.
...
Рейтинг: 0 / 0
UPDATE и GROUP BY
    #38453947
naas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
м-да... руки тут не при чем оказались. Правильный ответ: нечего было править!
MySQL, в отличие от других систем, не изменяет данные на такие же.
Скорее всего у меня отработал еще первый запрос, а дальше сколько не бейся будет 0 изменений.
Всем спасибо!
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / UPDATE и GROUP BY
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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