1. 程式人生 > >一條sql實現無限極分類

一條sql實現無限極分類

       我還沒提到就有人迫不及待的想回答,遞迴唄,但是你們想過沒有,遞迴的話,如果有3000個分類,有一級,二級,三級,四級的列表。你這個程式壓根就跑不動,你或許會說快取唄,但是生成快取的速度是你無法忍受的。

遞迴做法表結構建立:

id int(10) 分類id
name varchar(64)8804 分類名稱
reid int(10) 父類id

需求一:


需求2:


需求1比較簡單,沒啥資料量,用ajax展示開啟就行,但是需求2要全部列出來這就難倒我們了,如果按照某些人的做法不斷的遞迴查詢sql,一旦分類達到3000個的時候,根本打不開的網站

織夢cms的思路是這樣的:

id 分類id
topid 頂級id
reid 父類id

沒錯這種思路比第一種要簡化很多,只是多了個欄位,但是執行效率就絕對不一樣了。

根據頂級分類找到它相應的二級分類,再根據二級分類遞迴調出三級分類。

我的思路:

父類id

id 分類id
reid 父類id
height 層級

height層級

首先全表sql得到列表.

通過程式 把一級分類放在一個數組中,然後把二級分類放到一個數組裡。這樣通過一級分類找二級分類很容易了,不用再執行sql了,只需要在二級分類中找父類id等於某分類即可獲得該分類下的所有子分類,依次類推。