2014-04-20 17 views
0

我想在我的數據庫模式中使用Path Enumeration分層模型。 問題是,MySQL不允許我在同一個表上有一個子查詢來檢索父行路徑。使用MySQL的路徑枚舉樹模型

有沒有辦法解決這個問題而不創建臨時表?

這裏是DDL爲我的表:

CREATE TABLE COC_FIELD 
(
    field_id VARCHAR(255) PRIMARY KEY NOT NULL, 
    name VARCHAR(255), 
    query_id VARCHAR(255) NOT NULL, 
    path_enumeration VARCHAR(1000), 
    FOREIGN KEY (report_query_id) REFERENCES COC_QUERY (query_id) 
); 

語句插入子行(在MySQL不允許):

insert into COC_FIELD(field_id, name, report_query_id, path_enumeration) 
values('field_2', 'Month', 'query_1', CONCAT(
    (select path_enumeration from COC_FIELD where field_id = 'field_2'), 
    '/', 'field_3')) 

回答

0

將使用變量是一個選擇?

SET @path = (SELECT path_enumeration FROM COC_FIELD WHERE field_id = 'field_2'); 

INSERT INTO COC_FIELD(field_id, name, path_enumeration) 
VALUES ('field_2', 'Month', CONCAT(IFNULL(@path, ''), '/', 'field_3')); 

第一條語句設置一個名爲path的變量,該變量將在insert語句中使用。如果@path爲空,我使用額外的IFNULL檢查來防止獲得null值。

請注意,我必須刪除我的測試report_query_id字段。