2017-09-14 43 views
0

我尋找MySQL查詢/功能打造蛞蝓URL遞歸自加入MySQL表遞歸塞網址

enter image description here

我需要slugtermid = 4category-2/category-2-1

回答

0

不像更重的數據庫系統,MySQL不支持像遞歸CTE /查詢那樣的任何東西。但是,我們可以通過只是做了一定數量的自我模擬遞歸查詢連接:

SELECT 
    CASE WHEN t3.slug IS NOT NULL 
     THEN CONCAT(t3.slug, '/', t2.slug, '/', t1.slug) 
     WHEN t2.slug IS NOT NULL 
     THEN CONCAT(t2.slug, '/', t1.slug) 
     ELSE t1.slug END AS slug 
FROM yourTable t1 
LEFT JOIN yourTable t2 
    ON t1.term_id = t2.id 
LEFT JOIN yourTable t3 
    ON t2.term_id = t3.id 
WHERE t1.id = 4; 

輸出:

slug 
1 category-2/category-2-1 

演示在這裏:

Rextester

在該演示可以刪除WHERE條件以查看t表格中的每個條目正在形成正確的路徑。如果需要,也可以很容易地擴展這個查詢以在層次結構中更深入。

+0

因此,2類/ 2-1類/ 2-1-1/2-1-1-1類很難查詢(需要t4 t5等)? – user7440009

+0

這取決於你的「硬」這個詞的含義是什麼。如果這個解決方案不適合你,那麼只需搜索「分層查詢MySQL」。還有其他選項。 –