Здесь курят мануал.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха информатор 3.1
Еще более удобное оповещение о флуде!

Краснодарское время: 04 Февраль, 2012, 10:40:42

Страниц: [1] 2 3 4
Печать
Автор Тема: MySQL: Не возможно обновить данные в таблице, в которой производишь выборку  (Прочитано 4577 раз)
0 Пользователей и 1 Гость смотрят эту тему.
adw0rd    ↓ 
28 Июль, 2009, 02:21:24
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: Джедаи

Карма: не нужна
Сообщений: 17195
Сила слова: 1.65

Не возможно обновить данные в таблице, в которой производишь выборку
 
SQL

mysql> UPDATE `categories` SET `size` = (SELECT (`count` / ((max(`count`) - min(`count`)) / 10)) FROM `categories`);
ERROR 1093 (HY000): You can't specify target table 'categories' for update in FROM clause

не в курсе как обойти?)
 
------
 
Второй вариант, без селекта:
SQL

mysql> UPDATE `categories` SET `size` = (`count` / ((max(`count`) - min(`count`)) / 10));
ERROR 1111 (HY000): Invalid USE of GROUP FUNCTION
 

тоже не прокатывает, есть соображения как это тоже обойти?
 
------
 
По отдельности все работает:
 
SQL

mysql> SELECT (`count` / ((max(`count`) - min(`count`)) / 10)) FROM `categories`;
+--------------------------------------------------------+
| (`count` / ((max(`count`) - min(`count`)) / 10))     |
+--------------------------------------------------------+
|                                             3.47826087 |
+--------------------------------------------------------+
1 row IN SET (0.00 sec)
 

mysql> UPDATE `categories` SET `size` = 3.47826087;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 21  Changed: 0  Warnings: 0
 

 
« Последнее редактирование: 28 Июль, 2009, 02:21:24 от adw0rd » Записан

FreeBSD, Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch
Кинсбург * Либург * Футбург * Мой блог
adw0rd    ↓ 
28 Июль, 2009, 02:20:47 , спустя
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: Джедаи

Карма: не нужна
Сообщений: 17195
Сила слова: 1.65

Так тоже не работает...
 
SQL

UPDATE `categories` AS `c1`
JOIN `categories` AS `c2`
USING(`category_id`)
SET `c1`.`size` = (`c2`.`count` / ((max(`c2`.`count`) - min(`c2`.`count`)) / 10));
 
ERROR 1111 (HY000): Invalid USE of GROUP FUNCTION
 
« Последнее редактирование: 28 Июль, 2009, 02:20:47 от adw0rd » Записан

FreeBSD, Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch
Кинсбург * Либург * Футбург * Мой блог
adw0rd    ↓ 
28 Июль, 2009, 02:38:09 , спустя 17 минут 22 секунды
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: Джедаи

Карма: не нужна
Сообщений: 17195
Сила слова: 1.65

Решение:
 
SQL

-- создаем коэффициент деления
SET @percent = (SELECT (max(`count`) - min(`count`)) / 10 FROM `categories`);
 
-- создаем вьюху
CREATE VIEW `categories_view` AS SELECT `category_id`, `count` FROM `categories`;
 
-- жойним таблицу и вьюху, обновляя данные
UPDATE `categories` AS `c`
JOIN `categories_view` AS `cv`
USING(`category_id`)
SET `c`.`size` = `cv`.`count` / @percent;
 
 
Записан

FreeBSD, Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch
Кинсбург * Либург * Футбург * Мой блог
rider-sx    ↓ 
28 Июль, 2009, 02:45:55 , спустя 7 минут 46 секунд
НЕ ХУЕТА! ХУЕТА!

drmmmmmm
Группа: Адекваты

Карма: 32
Сообщений: 2718
Сила слова: 1.18

adw0rd, ты охуенно поговорил так сам с собой ^_^
Записан

adw0rd    ↓ 
28 Июль, 2009, 02:47:44 , спустя 1 минуту 49 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: Джедаи

Карма: не нужна
Сообщений: 17195
Сила слова: 1.65


adw0rd, ты охуенно поговорил так сам с собой ^_^
на самом деле мы говорили с dics'ом в скайпе, а код я выкладывал сюда, чтобы другим помогло на будущее ;)
Записан

FreeBSD, Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch
Кинсбург * Либург * Футбург * Мой блог
rider-sx    ↓ 
28 Июль, 2009, 02:55:42 , спустя 7 минут 58 секунд
НЕ ХУЕТА! ХУЕТА!

drmmmmmm
Группа: Адекваты

Карма: 32
Сообщений: 2718
Сила слова: 1.18



adw0rd, ты охуенно поговорил так сам с собой ^_^
на самом деле мы говорили с dics'ом в скайпе, а код я выкладывал сюда, чтобы другим помогло на будущее ;)
:DDD Верю )
Спустя 17 секунд добавил
ПыСы 1212
Записан

adw0rd    ↓ 
28 Июль, 2009, 04:01:13 , спустя 1 час 5 минут 31 секунду
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: Джедаи

Карма: не нужна
Сообщений: 17195
Сила слова: 1.65

Продолжение http://adw0rd.ru/2009/mysql-update-error/
Записан

FreeBSD, Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch
Кинсбург * Либург * Футбург * Мой блог
phpdude    ↓ 
28 Июль, 2009, 07:07:58 , спустя 3 часа 6 минут 45 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 339
Сообщений: 19661
Сила слова: 1.72

SQL
mysql> UPDATE `categories` SET `size` = (`count` / ((max(`count`) - min(`count`)) / 10));
ERROR 1111 (HY000): Invalid USE of GROUP FUNCTION

не проще ли тут group дописать?)
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
adw0rd    ↓ 
28 Июль, 2009, 12:43:32 , спустя 5 часов 35 минут 34 секунды
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: Джедаи

Карма: не нужна
Сообщений: 17195
Сила слова: 1.65

phpdude, покажи как
Записан

FreeBSD, Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch
Кинсбург * Либург * Футбург * Мой блог
phpdude    ↓ 
28 Июль, 2009, 01:29:20 , спустя 45 минут 48 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 339
Сообщений: 19661
Сила слова: 1.72

хз)) я просто ошибку проанализировал)
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
adw0rd    ↓ 
28 Июль, 2009, 01:33:47 , спустя 4 минуты 27 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: Джедаи

Карма: не нужна
Сообщений: 17195
Сила слова: 1.65

phpdude, написано что неправильное так группировать функции... или нечто подобное )
Записан

FreeBSD, Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch
Кинсбург * Либург * Футбург * Мой блог
phpdude    ↓ 
28 Июль, 2009, 01:36:51 , спустя 3 минуты 4 секунды
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 339
Сообщений: д-о-х-у-я!
Сила слова: 1.72


phpdude, написано что неправильное так группировать функции... или нечто подобное )
попробуй дописать нечто вида
group by null в конце)) может сканает)
Спустя 5 секунд добавил
просто проверить
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
adw0rd    ↓ 
28 Июль, 2009, 01:43:50 , спустя 6 минут 59 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: Джедаи

Карма: не нужна
Сообщений: 17195
Сила слова: 1.65

mysql> update `categories` set `size` = (`count` / ((max(`count`) - min(`count`)) / 10)) group by null;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right synta
x to use near 'group by null' at line 1
 
mysql> update `categories` set `size` = (`count` / ((max(`count`) - min(`count`)) / 10)) group by rand();
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right synta
x to use near 'group by rand()' at line 1
 
mysql> update `categories` set `size` = (`count` / ((max(`count`) - min(`count`)) / 10)) group by `category_id`;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right synta
x to use near 'group by `category_id`' at line 1
Записан

FreeBSD, Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch
Кинсбург * Либург * Футбург * Мой блог
phpdude    ↓ 
28 Июль, 2009, 01:46:55 , спустя 3 минуты 5 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 339
Сообщений: д-о-х-у-я!
Сила слова: 1.72

adw0rd, стрянно )))
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
adw0rd    ↓ 
28 Июль, 2009, 01:55:18 , спустя 8 минут 23 секунды
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: Джедаи

Карма: не нужна
Сообщений: 17195
Сила слова: 1.65

не угадал))
Записан

FreeBSD, Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch
Кинсбург * Либург * Футбург * Мой блог
Страниц: [1] 2 3 4
Печать
 

Перейти в: