mysql如何查出父分类下面的所有子分类中的站点信息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql如何查出父分类下面的所有子分类中的站点信息相关的知识,希望对你有一定的参考价值。
比如,这是一个三级单位分类表,他的下面包含着一些站点信息。现在可以通过最底层的三级单位查询到相关站点信息,要是从二级单位开始查询包含三级单位的站点,或者从一级单位包含二级、三级子单位的站点,查询语句该怎么写?
参考技术A每个分类都要设置个pid,规则是上J分类的id,如果是顶J分类,那么该pid则是0。
每个分类都要设置个path,规则是上J分类的path,连接上级分类的pid。
设置好,效果如下:
拿中国-河北-廊坊,做介绍。
已知的是廊坊的pid,(如果是id,那么在通过id查出pid)
SQL语句:select * from 表名 where id=4;
通过河北查中国和上面一样。。。
从2级查三级的话,已知的是河北的id。
SQL语句:select * from ua_column where pid=4;
从1级查所有,如上,研究研究就什么都有了
追问我要的不是查询下一级的内容,是查询下面所有子级的内容,比如我查询id为1的中国下面的子类,就会查询出 “ 河北, 北京,廊坊,昌平,回龙观” 5个 查询2级的时候要查询出3级和4级的所有内容,如果还与下级的话也要查询出来,也就是所有子级。
追答没有这样的SQL语句,你只能借助程序来玩了。
ThinkPHP分类查询(获取当前分类的子分类,获取父分类,下一级分类)
获取指定分类的所有子分类ID号
//获取指定分类的所有子分类ID号 function getAllChildcateIds($categoryID){ //初始化ID数组 $array[] = $categoryID; do { $ids = ‘‘; $where[‘pid‘] = array(‘in‘,$categoryID); $cate = M(‘cate‘)->where($where)->select(); foreach ($cate as $k=>$v){ $array[] = $v[‘id‘]; $ids .= ‘,‘ . $v[‘id‘]; } $ids = substr($ids, 1, strlen($ids)); $categoryID = $ids; } while (!empty($cate)); $ids = implode(‘,‘, $array); return $ids; // 返回字符串 //return $array //返回数组 }
获取指定分类所有父ID号
//获取指定分类所有父ID号 function getAllFcateIds($categoryID){ //初始化ID数组 $array[] = $categoryID; do{ $ids = ‘‘; $where[‘id‘] = array(‘in‘,$categoryID); $cate = M(‘cate‘)->where($where)->select(); echo M(‘cate‘)->_sql(); foreach ($cate as $v){ $array[] = $v[‘pid‘]; $ids .= ‘,‘ . $v[‘pid‘]; } $ids = substr($ids, 1, strlen($ids)); $categoryID = $ids; } while (!empty($cate)); $ids = implode(‘,‘, $array); return $ids; // 返回字符串 //return $array //返回数组 }
获取指定分类的所有子分类 键为ID,值为分类名
//获取指定分类的所有子分类 键为ID,值为分类名 function getCateKv($categoryID){ //初始化ID数组,赋值当前分类 $array[] = M(‘cate‘)->where("id={$categoryID}")->getField("cateName"); do { $ids = ‘‘; $where[‘pid‘] = array(‘in‘,$categoryID); $cate = M(‘cate‘)->where($where)->select(); echo M(‘cate‘)->_sql(); foreach ($cate as $k=>$v) { $array[$v[‘id‘]] = $v[‘cateName‘]; $ids .= ‘,‘ . $v[‘id‘]; } $ids = substr($ids, 1, strlen($ids)); $categoryID = $ids; } while (!empty($cate)); $ids = implode(‘,‘, $array); //return $ids; // 返回字符串 return $array //返回数组 }
以上是关于mysql如何查出父分类下面的所有子分类中的站点信息的主要内容,如果未能解决你的问题,请参考以下文章