我是靠谱客的博主 粗犷酒窝,最近开发中收集的这篇文章主要介绍mysql 多级分类_[转]常规多级分类(产品分类,文章分类)在mysql中的存储方式...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在日常工作中,我们会经常碰到产品分类,文章分类等等修改不频繁的多级分类。通常的做法是类似于这样的结构:

常规做法

125285429def

Paste_Image.png

如果按照多级查询的话,采用以下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';

查询结果如下:

125285429def

Paste_Image.png

缺点:

举一个实际的例子吧--产品分类一共三级,所有的产品关联的分类均是第三级叶子节点。现在的需求是,通过顶级分类,查询所有这个大分类下包含的产品?

125285429def

Paste_Image.png

我们用嵌套的方式来表达多层关系,建表的时候加上左右值,结构如下:

125285429def

Paste_Image.png

那这时候你肯定会问,左右值是怎么计算出来的?请接着看下面两张图:

125285429def

Paste_Image.png

估计你看完这两张图后,就明白其中的技巧了,那我们来看看这样的结构有什么好处?

我们来解决常规做法中的那个产品分类的问题

select category_id from category where lft>1 and rgt<20

要是想查询子树也是同样的道理~

扩展一下,还可以给每条记录加入父节点id字段,这样也就拥有了基础方法的属性

缺点:

如果要加入和删除一个节点,就要重新对所有节点进行左值右值计算!!!!

最后

以上就是粗犷酒窝为你收集整理的mysql 多级分类_[转]常规多级分类(产品分类,文章分类)在mysql中的存储方式...的全部内容,希望文章能够帮你解决mysql 多级分类_[转]常规多级分类(产品分类,文章分类)在mysql中的存储方式...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部