2011-05-19 2 views
0

У меня есть таблица саморегуляции, и я хочу добавить как родительский, так и дочерний примеры в один запрос. Есть ли лучший способ сделать это, чтобы разбить его так же, как у меня внизу?Таблица саморегуляции, оператор parent/child insert в одном запросе

+---------------------+ 
|  example  | 
+---------+-----------+ 
| id | parent_id | 
+---------+-----------+ 
| 1 |   | 
| 2 |  1  | 
| 3 |  1  | 
| 4 |  1  | 
| 5 |   | 
| 6 |  5  | 
| 7 |  5  | 
+---------+-----------+ 

DECLARE example_id INT; 

INSERT INTO `example` (parent_id) VALUE(""); 

SET example_id = LAST_INSERT_ID(); 

INSERT INTO `example` (parent_id) VALUE (example_id); 

ответ

2

Если вы имеете в виду структуру дерева с вашим вопросом вам лучше проверить this article. Если у вас будет только 1 уровень детей для родителей, то ваш путь, возможно, самый простой способ.

+0

У меня было бы неограниченное количество детей на одного родителя. Спасибо за ссылку. –

+0

OP уже показал в примере, что он имеет несколько childern для каждого родителя. – Johan

+0

Было написано заявление о пропуске, я имел в виду 1 уровень в древовидной структуре. Исправить это прямо сейчас; жаль об этом – frail

0

Ваш способ делать все будет хорошо.
В реальном примере вы, вероятно, сделаете insert - select, основанный на некоторых критериях.

INSERT INTO example SELECT 
    null as id 
    ,e.id as parent_id 
    ,10 as field1 
    ,.... 
FROM example e WHERE e.somefield = 10 ORDER BY e.id DESC LIMIT 1; 
Смежные вопросы