У меня есть одна таблица с тысячами записей, многие из которых в иерархической форме.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", который, кажется, недействительным весь процесс!