在日常工作中,我們會經常碰到產品分類,文章分類等等修改不頻繁
的多級分類。通常的做法是類似於這樣的結構:
常規做法
如果按照多級查詢的話,采用以下sql語句就可以:
SELECT t1.name AS lev1, t2.name as lev2, t3.name as lev3, t4.name as lev4
FROM category AS t1
LEFT JOIN category AS t2 ON t2.parent = t1.category_id
LEFT JOIN category AS t3 ON t3.parent = t2.category_id
LEFT JOIN category AS t4 ON t4.parent = t3.category_id
WHERE t1.name = 'ELECTRONICS';
缺點: 代碼如下 復制代碼 舉一個實際的例子吧--產品分類一共三級,所有的產品關聯的分類均是第三級葉子節點。現在的需求是,通過頂級分類,查詢所有這個大分類下包含的產品?
左值右值方法
那我們來看看這種方式,先看原理吧
我們用嵌套的方式來表達多層關系,建表的時候加上左右值,結構如下:那這時候你肯定會問,左右值是怎麼計算出來的?請接著看下面張圖:
估計你看完這兩張圖後,就明白其中的技巧了,那我們來看看這樣的結構有什麼好處? 我們來解決常規做法中的那個產品分類的問題 代碼如下 復制代碼 假設頂級分類選擇的就是根節點,然後要查詢所有旗下的產品