Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: specify target table
 
 автор: roma   (11.06.2009 в 20:57)   письмо автору
 
 

Добрый вечер.
Работаю со списком с чекбоксами.
[checkbox 1] Авто
[checkbox 1_1] Легковые
[checkbox 1_1_1] ... и тд
[checkbox 1_2] Грузовые
[checkbox 2] Недвижимость
[checkbox 2_1] Дома
[checkbox 2_2] Квартиры
вложенность списка может быть от 1 до 4
При нажатии на [checkbox 1] выбираются автоматом [checkbox 1_1], [checkbox 1_2],[checkbox 1_1_1], и обновляется поле state таблицы tree в соответстующее положение.

таблица tree:
id
pid
level
state //может быть 0 или 1
name 


создал такой запрос.


$id=5; //id нажатого checkbox
//обновляем статус всех детей
$sql="
 UPDATE tree SET `state` =0 WHERE id IN (
SELECT t.id
FROM (

SELECT $id AS id
UNION
SELECT id
FROM tree AS tree2
WHERE tree2.pid =$id
UNION
SELECT tree3.id
FROM tree AS tree2
LEFT JOIN tree AS tree3 ON tree2.id = tree3.pid
WHERE tree2.pid =$id
UNION
SELECT tree4.id
FROM tree AS tree2
LEFT JOIN tree AS tree3 ON tree2.id = tree3.pid
LEFT JOIN tree AS tree4 ON tree3.id = tree4.pid
WHERE tree2.pid =$id
) AS t
) ";


во-первых, хотелось бы узнать правильность такого запроса
во-вторых, на локалке этот запрос срабатывает на ура, на вот на сайте mysql_error() выдает ошибку
You can't specify target table 'tree' for update in FROM clause

Заранее спасибо.

  Ответить  
 
 автор: ronin80   (12.06.2009 в 10:23)   письмо автору
 
   для: roma   (11.06.2009 в 20:57)
 

вы не можете в конструкции where использовать обновляемую таблицу, там где у вас подзапрос идёт

  Ответить  
 
 автор: Roma   (12.06.2009 в 11:58)   письмо автору
 
   для: ronin80   (12.06.2009 в 10:23)
 

спасибо, уже разобрался.
нашел статью, правда на англ. если кому-то будет интересно
http://www.xaprb.com/blog/2006/06/23/how-to-select-from-an-update-target-in-mysql/

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования