liuxuean 2016-06-03 14:42:19 2897次浏览 0条回复 4 2 0

工作期间,每个人可能都会跳槽,到每个地方接手的项目可能也不一样,每个地方的项目设计都有些大同小异, 可能不是很符和你的口味,下面看看一个需求,先看看表设计:

看看表设计 这是个店铺分类表:

CREATE TABLE `shop_category` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '店铺分类id',
  `shop_id` int(11) NOT NULL COMMENT '店铺id',
  `shop_cat_name` varchar(50) NOT NULL COMMENT '店铺分类名称',
  `parent_id` int(11) NOT NULL DEFAULT '0' COMMENT '父分类',
  `sort_order` tinyint(1) NOT NULL DEFAULT '0' COMMENT '分类排序',
  PRIMARY KEY (`id`)
) 

简单的插入几条数据:

INSERT INTO `shop_category` VALUES ('1', '1', '饰品',  '0', '0');
INSERT INTO `shop_category` VALUES ('2', '1', '衬衫',  '1', '0');
INSERT INTO `shop_category` VALUES ('3', '1', '牛仔裤', '0', '0');
INSERT INTO `shop_category` VALUES ('4', '1', '衬衫', '3', '0');
INSERT INTO `shop_category` VALUES ('5', '1', '衬衫', '1', '0');
INSERT INTO `shop_category` VALUES ('13', '1', '上衣', '3', '0');
INSERT INTO `shop_category` VALUES ('15', '1', '鞋子', '13', '0');
INSERT INTO `shop_category` VALUES ('16', '1', '鞋子', '15', '0');
INSERT INTO `shop_category` VALUES ('17', '1', '珂卡芙','15', '0');
INSERT INTO `shop_category` VALUES ('18', '1', '鞋子', '17', '0');
INSERT INTO `shop_category` VALUES ('19', '1', '全部', '5', '0');
INSERT INTO `shop_category` VALUES ('20', '1', '女鞋', '5', '0');

这是个无限分类的表,每个商品栏目下面可能有很多的子栏目,可以无限的往下加,好像一颗树一样 当有一天你的 上级 要求你的这些数据只要一二层 开放,其他子层先不放出来,这时候感觉有点儿蛋疼, 呀的,还是暂时开放,不上永久的,这些数据又不能动,咋办:写个程序巴拉巴拉的循环,终于搞定了,谁知莫天 老大来检查代码发现你呀的程序不合格 被骂了一通,只能重新写,又蛋疼,你把所有的取出来吧,还好办,一条语句把所有的取出来不就好了,这下可好 偏偏让我取一二层的 只能回去学习 MySQL 了,辛苦了半天,又写出了条语句:

(SELECT p.*  FROM shop_category p, (SELECT id FROM shop_category WHERE shop_id=1 and parent_id=0 ) e  WHERE (p.parent_id!=0 and p.parent_id=e.id)) UNION  (SELECT *  FROM shop_category  WHERE shop_id=1 and parent_id=0 )

终于把店铺为 1 的一二层数据给取出来了,哈哈,多么的简单,非要这么复杂,哈哈, 最近无聊 发表存在感,大家别打我

觉得很赞
    没有找到数据。
您需要登录后才可以回复。登录 | 立即注册