2010-06-12 63 views
0

我必須做這樣的事情複雜插入

insert into object (name, value, first_node) values ('some_name', 123, 0) 
@id = mysql_last_insert_id() 
insert nodes (name, object_id) values ('node_name',@id) 
@id2 = mysql_last_insert_id() 
update object set [email protected] where [email protected] 

是否有可能使其更簡單? 如果我想以合理的效率插入更多對(對象,節點)會怎麼樣?

+0

什麼這麼複雜? – 2010-06-12 13:27:26

回答

0

您應該使用第三個表,使你的人際關係:

  • OBJECT(ID,名稱,值)
  • 節點(ID,姓名)
  • OBJ_NOD(NODE,OBJECT)

你可以讓你插入這樣:

insert into object (name, value) values ('some_name', 123) 
@oid = mysql_last_insert_id() 
insert nodes (name) values ('node_name') 
@nid = mysql_last_insert_id() 
insert obj_node (node,object) values (@nid, @oid) 

然後,您可以使用連接來獲取特定對象(或節點對象)的節點:

SELECT O.ID AS OID, O.NAME AS ONAME, O.VALUE, N.NAME AS NNAME, N.ID AS NID 
FROM OBJECT AS O 
JOIN OBJ_NOD ON OBJ_NOD.OBJECT = O.ID 
JOIN NODES AS N ON N.ID = OBJ_NOD.NODE 
WHERE O.ID = @object_id; —- or 'N.ID = @node_id' if you want to get elements from a node id