第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

mysql 查詢分類下的所有商品

mysql 查詢分類下的所有商品

PHP
慕虎7371278 2019-03-13 09:01:19
尋求一個(gè)解決方案:有一個(gè)分類,下面可能有無(wú)限級(jí)子分類,暫定5級(jí)子分類吧!那如果用戶點(diǎn)擊頂級(jí)分類,怎么查出該分類下的所有商品,這個(gè)頂級(jí)分類下的樹形結(jié)構(gòu)分類可能有上千個(gè)子分類,如果按照頂級(jí)分類查出所有子分類,然后通過(guò)mysql的catid去用IN查詢,肯定會(huì)掛掉請(qǐng)問(wèn)各位大神如何解決這種需求,數(shù)據(jù)結(jié)構(gòu)方面怎么設(shè)計(jì)呢?或者什么解決算法,用的是PHP
查看完整描述

5 回答

?
郎朗坤

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊

給個(gè)思路。以空間換時(shí)間,就是冗余。
舉個(gè)例子,一下是分類

  • 電器 cat_id = 1

    • 電腦 cat_id = 2 pid = 1
    • 手機(jī) cat_id = 3 pid = 1

      • 蘋果手機(jī) cat_id =4 pid =3

那么 有個(gè) 商品 iphone 8 ,商品ID goods_id G1001

可以兩種方案都可以搞定。
第一做中間表
cat_id goods_id
1 G1001
3 G1001
4 G1001
這樣,如果你是到哪個(gè)分類下,都可以找到該商品

第二種做多級(jí)字段
catid_string 1,3,4
做查詢的時(shí)候 比如說(shuō)找電器 , 只要 where catid_string LIKE "1%"
找手機(jī) where catid_string LIKE "1,3%"

以上兩種方法都可以適合做查詢
但是第一種方法可以更好的做各種業(yè)務(wù)拓展,更有選擇的余地。

查看完整回答
反對(duì) 回復(fù) 2019-03-18
?
陪伴而非守候

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊

閉包表,單獨(dú)用一個(gè)表來(lái)記錄全部的祖先關(guān)系。

CREATE TABLE `tree`  (
  `ancestor` int NOT NULL COMMENT '祖先ID(分類ID)',
  `descendant` int NOT NULL COMMENT '后代ID',
  `descendant_type` tinyint NOT NULL COMMENT '后代類型(0分類,1商品)',
  PRIMARY KEY (`ancestor`, `descendant`, `descendant_type`)
);

要查某個(gè)分類的下的全部商品id:

select descendant from tree where ancestor = 10 and descendant_type = 1;

要查出商品信息就關(guān)聯(lián)查詢:

select p.* from products p 
  join tree t on p.id = t.descendant 
  where t.ancestor = 10 and t.descendant_type = 1

當(dāng)然,增刪分類和商品的時(shí)候要修改閉包表。

《SQL反模式》里總結(jié)的一個(gè)表:

https://img1.sycdn.imooc.com//5c8f41a90001ee3505880118.jpg

查看完整回答
反對(duì) 回復(fù) 2019-03-18
?
月關(guān)寶盒

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊

剛網(wǎng)上搜到一個(gè)比較不高大上的方法,但是我覺得可行,不知道還有沒有比這更好的方法,就是所有子分類用一個(gè)字段記錄他所有的父級(jí)id,有多少就記錄多少,查詢的時(shí)候用find_in_set,不過(guò)這個(gè)函數(shù)貌似很慢,繼續(xù)關(guān)注大神們的回答

查看完整回答
反對(duì) 回復(fù) 2019-03-18
?
守候你守候我

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊

我們一般設(shè)計(jì)都是需要有一個(gè)字段記錄他的上級(jí)id,如果是頂級(jí)就是0,然后遞歸查詢無(wú)限極分類

查看完整回答
反對(duì) 回復(fù) 2019-03-18
?
飲歌長(zhǎng)嘯

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊

如果注重查詢效率的話可以考慮MPTT - Modified Preorder Tree Traversal

查看完整回答
反對(duì) 回復(fù) 2019-03-18
  • 5 回答
  • 0 關(guān)注
  • 2376 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)