2013-10-06 98 views
0

我有一個MySQL表看起來像這樣 enter image description here多層次COMBOX - MySQL查詢

我想創建一個組合框,看起來像這樣:

Hardware (ID 1, Parent 0) 
-Child (ID 2, Parent 1) 
-Child (ID 3, Parent 1) 
--Child (ID 4, Parent 3) 

正如你所看到的,主類別具有父級ID = 0,其餘的具有與該類別的ID相關聯的ID。

我想知道的是,如果有辦法做到這一點,直接通過MySQL查詢?如果,那麼你能舉個例子嗎?

我在MySQL中嘗試了一些循環,但是我無法理解它在我腦海中的意義。

+0

爲什麼你想用一個下拉框來做到這一點?這是一個要求嗎? – CodeRedick

+0

這不是一個成就,但它應該可能與MySQL我認爲:9 – Jazerix

+0

不是真的,當你想要一個嵌套的數據集時,數據庫返回平面數據集。你可以將所有的數據作爲一個平面數據集並在之後處理......但是在一個單獨的組合框中有三個層次也不是很好的設計。你最好用三個組合框來動態細化細節。 – CodeRedick

回答

0

如果你被限制在3個等級,可以使2個LEFT JOIN S和得到一個查詢中的所有數據:

SELECT 
    t1.id, 
    TRIM(
     CONCAT(
      REPEAT('-',IF(t2.id IS NOT NULL,1,0) + IF(t3.id IS NOT NULL,1,0)), 
      ' ', 
      t1.label 
     ) 
    ) AS label 
FROM 
    mytable t1 
LEFT JOIN 
    mytable t2 ON (t1.parent = t2.id) 
LEFT JOIN 
    mytable t3 ON (t2.parent = t3.id) 
ORDER BY 
    IFNULL(t3.id, IFNULL(t2.id, t1.id))