update ... SELECT

monk

Новичок
update ... SELECT

Здравствуйте! Нужно сделать одним запросом так:

mysql_query("update diary_rate set week = (SELECT 1d + 2d + 3d + 4d + 5d + 6d + 7d AS all_sum FROM diary_rate)");

Как можно осуществить?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
monk
В этом случае, если количество строк в подзапросе > 1 будет ошибка.

Как можно осуществить?
Осуществить что?
 

Pigmeich

Новичок
monk
Не понятно, что за БД, но если, допустим, MySQL - можно использовать megefeature под названием view.
 

Pigmeich

Новичок
Mr_Max
посыпаю голову пеплом - смотрел на запрос.

Как я понял, ему надо расчитать колонку в таблице. Причем используя для каждой ячейки данные соответсвующей строки.
 

monk

Новичок
Mr_Max
Автор оригинала: Pigmeich
Как я понял, ему надо расчитать колонку в таблице. Причем используя для каждой ячейки данные соответсвующей строки.
Pigmeich
Автор оригинала: Pigmeich
monk
Не понятно, что за БД, но если, допустим, MySQL - можно использовать megefeature под названием view.
VIEW с какой версии MySQL?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
monk
Вы сами-же практически написали нужный запрос.
Осталось лишь добавить в подзапрос условие "связки" этих 2-х таблиц.

Возникикают трудности?

Будь-те добры сообщить mysql_error()
 

monk

Новичок
Mr_Max
У меня кол-во подзапросов будет >1
Что нужно изменить в приведенном запросе, чтобы он работал? И будет ли вообще работать?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
monk
У меня кол-во подзапросов будет >1
Будет ли работать... Вполне вероятно

Объясняйте организацию таблиц более подробно.
Структура +
Словами

-~{}~ 11.11.07 02:35:

Если Вы просто хотите просумировать значения ячеек в рядах в этой-же таблицы, и результат занести в ячейку sum этого ряда таблицы, то подзапрос SELECT вообще не нужен
 

Pigmeich

Новичок
monk
VIEW с пятой версии, а что у вас 4-ая?

If you access a column from tbl_name in an expression, UPDATE uses the current value of the column. For example, the following statement sets the age column to one more than its current value:

UPDATE persondata SET age=age+1;
(MySQL manual)
Оффтопик: а почему нет BB тегов для "хелпа"?
 

monk

Новичок
А такой запрос может выполниться?
[SQL]
mysql_query("update table1 set attach = (SELECT time from table1 where id=1) , time=1195932503 where id=1 and user='login')
[/SQL]
У меня не выполняется: mysql_error() -> "You can't specify target table 'diary_note' for update in FROM clause"
 

dimagolov

Новичок
при update tableX можно использовать только текущую строку tableX (то есть ее старое значение) или другие таблицы по причине того, что до конца update невозможно сказать какое актуальное значение у любой другой строки tableX кроме текущей.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
monk
А смысл такого запроса?
>update table1 set attach = (SELECT time from table1 where id=1) , time=1195932503 where id=1 and user='login'

-~{}~ 22.11.07 22:54:

show table
?

-~{}~ 22.11.07 22:55:

id может содержать одинаковые значения?
 
Сверху