Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: UPDATE строки
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » UPDATE строки

Страниц (1): [1]
 

1. integer - 26 Июня, 2007 - 14:24:04 - перейти к сообщению
Как можно выразить эти 2 запроса одним ? И возможно ли вообще ?

SELECT MAX(time) FROM visitors WHERE ip='127.0.0.1' AND registered=0
UPDATE visitors SET registered=1 WHERE ip='127.0.0.1' AND registered=0 AND time=(тут то что получили в 1м запросе)

Такой вот запрос не проходит ):
UPDATE visitors SET registered=1 WHERE ip='127.0.0.1' AND registered=0 AND MAX(time)
2. valenok - 26 Июня, 2007 - 14:44:49 - перейти к сообщению
UPDATE visitors SET registered=1 WHERE ip='127.0.0.1' AND registered=0 AND `time`=MAX(time)
3. integer - 26 Июня, 2007 - 15:11:09 - перейти к сообщению
генеально.
пойду учить матчасть

Цитата:
Ошибка:
Invalid use of group function

А как это понимать ?\n\n(Добавление)
не работает как ни крути\n\n(Добавление)
ап
4. valenok - 27 Июня, 2007 - 15:02:47 - перейти к сообщению
извини, не то.

Дело в том что можно было бы сделать так:
PHP:
скопировать код в буфер обмена
  1.  
  2. UPDATE visitors SET registered=1 WHERE ip='127.0.0.1' AND registered=0 AND `time` =
  3. (SELECT MAX(`time`) FROM `visitors` )
  4.  


Но такая конструкция тоже возвращает ошибку, так как update и чтение приходится на одну таблицу.
На счёт этого даже подавался Bug Report
Ответ на это был: Это задокументированное, ожидаемое поведение функции. Поэтому не баг..
Но доделать или исправить вроде не собираются.

Давайте вы опубликуете структуру таблицы, попробуем придумать альтернативное решение.\n\n(Добавление)
А пор такого типа комбинированные запросы с минимум и максимумом можно прочесть тут: http://mysql-generating-summarie[dot][dot][dot]-maximum-values/
5. EuGen - 29 Июня, 2007 - 10:58:50 - перейти к сообщению
Да, я тоже попробовал, не поленился, выдается ошибка про то, что использую одну и ту же таблицу в UPDATE и вложенном SELECT .. При этом если использовать другие таблицы во вложенном запросе, то все нормально.

 

Powered by ExBB FM 1.0 RC1