2014-01-30 5 views
0

У меня есть одна таблица с тысячами записей, многие из которых в иерархической форме.Hierachy, временные таблицы Вставка от

Я ищу способ ввода начального уровня нескольких деревьев определенной категории в запрос, поиск всех их детей, детей их детей и т. Д. До тех пор, пока не останется строк, а затем вставьте каждый идентификатор в другую таблицу 12 раз ,

Номерные (AID, id1, 1) (AID , id1, 2)...(AID, id1, 11)(AID, id1, 12)

Я пытался собрать этот запрос в качестве теста, чтобы помочь найти необходимые идентификаторы, с конечной целью, чтобы иметь возможность определить местонахождение каждого потомка и вставить каждый в другой раз стол x12. Но с очень небольшим успехом. Есть идеи?

....for the right syntax to use near ''parent_id' FROM test AS t JOIN acc2 as r on t.parent_id = r.id; ' at line 25 

Является ли мое текущее сообщение об ошибке

(Absolute Amateur)

DROP PROCEDURE IF EXISTS find_descendants() 
DELIMITER GO 
CREATE PROCEDURE find_descendants() 
BEGIN 

DROP TABLE IF EXISTS acc; 

CREATE TEMPORARY TABLE acc 

SELECT id, parent_id, 0 as level 
FROM test 

WHERE id = 2; 

ALTER TABLE acc ADD primary key (id,parent_id); 

REPEAT 

DROP TABLE IF EXISTS acc2; 

CREATE temporary table acc2 

SELECT * FROM acc; 

INSERT INTO acc2 

SELECT t.id, r.'parent_id' 

FROM test AS t 

JOIN acc2 AS r ON t.parent_id = r.id; 

UNTIL Row_count() = 0 END REPEAT; 

END; 

go 

DELIMITER; 
CALL find_descendants(); 

SELECT * FROM acc; 

После этого, я получаю ошибку # 1137 "не может возобновить таблицу" ACC2", который, кажется, недействительным весь процесс!

ответ

0

Вы синтаксическая ошибка в запросе INSERT

INSERT INTO acc2 
SELECT t.id, r.'parent_id' /*--COMMENT : remove '' from 'parent_id' , it should be r.parent_id */ 
FROM test AS t 
JOIN acc2 AS r ON t.parent_id = r.id; 
Смежные вопросы