|
|
|
| Добрый вечер.
Работаю со списком с чекбоксами.
[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
|
Заранее спасибо. | |
|
|
|
|
|
|
|
для: roma
(11.06.2009 в 20:57)
| | вы не можете в конструкции where использовать обновляемую таблицу, там где у вас подзапрос идёт | |
|
|
|
|
|
|
|
для: ronin80
(12.06.2009 в 10:23)
| | спасибо, уже разобрался.
нашел статью, правда на англ. если кому-то будет интересно
http://www.xaprb.com/blog/2006/06/23/how-to-select-from-an-update-target-in-mysql/ | |
|
|
|