update ... SELECT

  • Автор темы Автор темы monk
  • Дата начала Дата начала

monk

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

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

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

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

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

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

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

Будет ли работать... Вполне вероятно

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

-~{}~ 11.11.07 02:35:

Если Вы просто хотите просумировать значения ячеек в рядах в этой-же таблицы, и результат занести в ячейку sum этого ряда таблицы, то подзапрос SELECT вообще не нужен
 
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 тегов для "хелпа"?
 
А такой запрос может выполниться?
[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"
 
при update tableX можно использовать только текущую строку tableX (то есть ее старое значение) или другие таблицы по причине того, что до конца update невозможно сказать какое актуальное значение у любой другой строки tableX кроме текущей.
 
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 может содержать одинаковые значения?
 
Сверху