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如何查出父分类下面的所有子分类中的站点信息的主要内容,如果未能解决你的问题,请参考以下文章

用java程序怎么查出父分类下面的所有子分类中的站点信息

typecho后台的分类中 如何显示所有的分类及子分类?

SQL语句查询出一个父节点下的所有子节点

ThinkPHP分类查询(获取当前分类的子分类,获取父分类,下一级分类)

sql根据子节点查出所有的父节点的

mysql如何根据很多子节点查询出父节点,只要一条路径上的