在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java  PHP  數(shù)據(jù)庫(kù)/ 無(wú)限分類,如何查詢所有后代分類下數(shù)據(jù)?

無(wú)限分類,如何查詢所有后代分類下數(shù)據(jù)?

在無(wú)限分類時(shí),頂級(jí)分類下有無(wú)數(shù)子分類,子分類又有孫分類,子子孫孫無(wú)窮盡也。
那么,但我要查詢某一個(gè)分類,已經(jīng)它的后臺(tái)分類下的所有數(shù)據(jù)并且排序時(shí)怎么處理。
舉例,有一張分類表,有一張文章表,分類中有頂級(jí)分類國(guó)內(nèi)新聞,國(guó)內(nèi)新聞下分類下有社會(huì)新聞、科技新聞、娛樂(lè)新聞等等頻道,我要瀏覽國(guó)內(nèi)新聞時(shí),把社會(huì)新聞、科技新聞、娛樂(lè)新聞等子分類下所屬的新聞查出來(lái)統(tǒng)一展示,可以可以先查詢出國(guó)內(nèi)新聞下的所有子分類和孫分類、后代分類,然后查詢

SELECT FROM `article` WHERE `cate`=41 AND `cate`=52 AND `cate`=56 AND ...LIMIT 0,20

但是,如果該網(wǎng)站分類不是普通的分類,而是類似標(biāo)簽,且標(biāo)簽有子標(biāo)簽,子標(biāo)簽還有子標(biāo)簽,每個(gè)標(biāo)簽的子標(biāo)簽可能達(dá)到數(shù)百數(shù)千時(shí)怎么辦呢?

如果一個(gè)子標(biāo)簽,可以同時(shí)擁有兩個(gè)及兩個(gè)以上的父標(biāo)簽?zāi)?/p>

回答
編輯回答
下墜

層級(jí)節(jié)點(diǎn),做code,看一下我天朝的行政區(qū)劃代碼,

第一層 第二層 第三層
100 100100 100100100
200 200100 200100100
300 300100 300100100

查詢某個(gè)節(jié)點(diǎn)的子集(子子集等),like '100%';

idpid保留,兩種模式。

2017年7月19日 21:23
編輯回答
司令

mysql中增加pids字段,存儲(chǔ)所有父級(jí)id,通過(guò)分隔符分隔。
查詢時(shí)使用like、instr、locate之類的語(yǔ)法進(jìn)行查詢是否包含父級(jí)id

2017年1月31日 03:40
編輯回答
情皺

使用 mysql 預(yù)排序遍歷樹(shù)算法

2017年12月29日 08:33
編輯回答
落殤

使用CTE, Mysql從8.0開(kāi)始支持CTE

2017年3月20日 23:48
編輯回答
葬憶

涉及到你的表結(jié)構(gòu)如何設(shè)計(jì),典型的樹(shù)形結(jié)構(gòu),可以了解一下 The Nested Set Model。

結(jié)構(gòu)圖如下:
clipboard.png

表結(jié)構(gòu)如下:
clipboard.png

參考:


或者考慮動(dòng)態(tài) schema 的設(shè)計(jì),即 (schema-less),
這樣的話,可以考慮使用 NoSQL 如: mongoDB

參考:

2018年8月23日 07:08
編輯回答
檸檬藍(lán)

第二個(gè),閉包表。http://mp.weixin.qq.com/s/a8k...

2018年7月13日 15:26
編輯回答
情殺

要么在數(shù)據(jù)庫(kù)里完成遞歸,要么程序里寫(xiě)遞歸

2017年12月19日 14:26
編輯回答
毀憶

遞歸,子級(jí)的pid=父級(jí)的id

2018年4月19日 07:13