建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 数据库 > Mysql 教程 >

mysql无限级分类

时间:2011-05-13 14:34来源: 作者: 点击:
无限级分类的话题很多人在考虑,之前我也考虑过,最近朋友要用就重新整理了一下写成博文,分享给大家。

无限级分类的话题很多人在考虑,之前我也考虑过,最近朋友要用就重新整理了一下写成博文,分享给大家。

基本思路是使用一个“分类链”的字段,把父级分类的id用逗号隔开,然后使用find_in_set函数判断是否是某个分类的子分类。

表结构:

CREATE TABLE IF NOT EXISTS `link` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(10) NOT NULL,
  `pid` int(11) NOT NULL,
  `link` text NOT NULL,
  `level` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;

INSERT INTO `link` (`id`, `name`, `pid`, `link`, `level`) VALUES
(1, 'name1', 0, '1', 1),
(2, 'name2', 0, '2', 1),
(3, 'name3', 1, '1,3', 2),
(4, 'name4', 2, '2,4', 2),
(5, 'name5', 3, '1,3,5', 3),
(6, 'name6', 4, '2,4,6', 3),
(7, 'name7', 3, '1,3,7', 3),
(8, 'name8', 4, '2,4,8', 3);

select * from link where id = 1
select * from link where pid = 1 //下一级
select * from link where find_in_set(1, link) //所有下级 包含自己
select * from link where find_in_set(1, link) and level >1 //所有下级 不包含自己
select * from link where find_in_set(1, link) and id <> 1

select * from goods where cid in (select id from link where find_in_set(3, link)) //商品表关联

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片