2011-05-19 92 views
0

我有一個自引用表,並且我想要在單個查詢中添加父例子和子例子。有沒有更好的方法來做到這一點,然後以類似於下面的方式將其分解?在一個查詢中自引用表,父/子插入語句

+---------------------+ 
|  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

我會有無限的孩子​​每父母。感謝您的鏈接。 – 2011-05-19 12:28:27

+0

OP在示例中已經顯示他每個父母有多個childern。 – Johan 2011-05-19 12:28:43

+0

有一個錯過書面聲明,我的意思是樹狀結構的1級。立即修復它;對此感到遺憾 – frail 2011-05-19 12:35:17

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;