关于mysql怎么查子级机构的信息

mysql如何查出一级分类以及子级的个数

这个需要查看下你的表是怎么设计的

创新互联专注于滨州网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供滨州营销型网站建设,滨州网站制作、滨州网页设计、滨州网站官网定制、微信小程序开发服务,打造滨州网络公司原创品牌,更为您提供滨州网站排名全网营销落地服务。

在我的想法中,至少这张表中要有一个字段,就是parent_id

你可以规定当parent_id 为0时为一级目录,所以你可以根据parent_id=0来确定是一级目录

子级就要看你是否是需要子级下面的子级 还是只是需要子级

如果是第二种就简单了,根据parent_id = id可以查出下面的子级

如果是第一种,在mysql里面就需要写函数或存储过程了 一级级往下走 直到子级为空

Oracle就方便些,他提供了一个函数可以直接调用就行

start with…connect by prior

可以参考:网页链接

MYSQL 查询树形结构数据,查询某个节点下的所有子节点数据。

java版的实际例子。类同你说的情况

private void findChildList(AssetType parent,ListAssetType list){

String hql = "from AssetType a where a.parentAssetType.assetTypeId=? ORDER BY a.sort,a.assetTypeName asc";

ListAssetType childList = this.assetTypeDao

.getEntityManager()

.createQuery(hql)

.setParameter(1, parent.getAssetTypeId())

.getResultList();

int size = childList.size();

if(size0){

for (int i = 0; i size; i++) {

AssetType assetType = childList.get(i);

ListAssetType childs = assetType.getChildAssetType();

if(childs.size()0){

list.addAll(childs);

this.findChildList(assetType, list);//递归查询节点的子节点

}

}

}

}

如何在MySQL数据库进行子查询

1、where型子查询

(把内层查询结果当作外层查询的比较条件)

#不用order by 来查询最新的商品

select goods_id,goods_name from goods where goods_id = (select max(goods_id) from goods);

#取出每个栏目下最新的产品(goods_id唯一)

select cat_id,goods_id,goods_name from goods where goods_id in(select max(goods_id) from goods group by cat_id);

2、from型子查询

(把内层的查询结果供外层再次查询)

#用子查询查出挂科两门及以上的同学的平均成绩

思路:

#先查出哪些同学挂科两门以上

select name,count(*) as gk from stu where score 60 having gk =2;

#以上查询结果,我们只要名字就可以了,所以再取一次名字

select name from (select name,count(*) as gk from stu having gk =2) as t;

#找出这些同学了,那么再计算他们的平均分

select name,avg(score) from stu where name in (select name from (select name,count(*) as gk from stu having gk =2) as t) group by name;

3、exists型子查询

(把外层查询结果拿到内层,看内层的查询是否成立)

#查询哪些栏目下有商品,栏目表category,商品表goods

select cat_id,cat_name from category where exists(select * from goods where goods.cat_id = category.cat_id);

mysql 表结构如何设计可以很快的查出一个部门下所有子部门的员工【包含本部门】

下面只定义了基本结构,其他的如索引,字符集等要酌情加上。

create table departments (

id int primary key,

name varchar(50) not null,

parent_id int

)

create table employee (

id int primary key,

department_id int not null,

name varchar(50) not null,

)

下面是一些伪代码

department = select * from departments where name = [department_name]

departments = select * from departments where parent_id = department.id

select * from employee where department_id in [departments.id + department.id]

Mysql 子查询怎么写?

子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从 MySQL 4.1 开始引入,在 SELECT 子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多个表。

子查询中常用的操作符有 ANY(SOME)、ALL、IN 和 EXISTS。

子查询可以添加到 SELECT、UPDATE 和 DELETE 语句中,而且可以进行多层嵌套。子查询也可以使用比较运算符,如“”、“=”、“”、“=”、“!=”等。


分享名称:关于mysql怎么查子级机构的信息
分享路径:http://scyanting.com/article/docidds.html