A. 如何只用sql语句查询一个类别下面所有子类包含的信息
Sql Server 2000因为你这里说了只有三级分类,所以我就不写Sql函数了,得到华北下面所有子类别的ClassID(不包括华北的ClassID)select ClassID from Newclass where classParentID in (select ClassID from Newclass where classParentID=51)
根据类别ClassID表查询新闻select * from News where ClassID in (select ClassID from Newclass where classParentID in (select ClassID from Newclass where classParentID=51))
ok了
B. sql获得子类有多少个
05可以用递归
查询id=1111下的所有子类
WITH CTE1 AS
(
SELECT ID,NAME,PID FROM TB WHERE ID='1111'
UNION ALL
SELECT A.ID,A.NAME,A.PID FROM TB A INNER JOIN CTE1 B ON A.PID=B.ID
)
SELECT * FROM CTE1
C. SQL 如果查询所有一级类和对应的二级子类
select * from News left join Newclass on News.ClassID=NewClass.ClassID where Newclass.classParentID=News.ClassID 没怎么仔细看 我理解的是 新闻表是主表 查询的是 所有newclass表里所有 classparentId等于ClassId的数据
D. sql如何查询一个类别下面所有子类包含的信息
我理解的你的问题,是只是通过sql来实现 查询?还是使用开发语言来实现。如果通过sql来查询,我想ClassID一定另一张表的主键,您就可以通过这个主键去别的表中查询出你需要的信息。
E. sql语句查询一级分类下的二级分类以此类推
封装一个类:
<?php
namespace AppModelsAdmin;
use ;
class Sort extends Model
{
public $table = 'type';
//允许数据库批量操作
public $guarded = [];
/**
* 格式化数据
* @return 调用对象
*/
public function tree()
{
//获取所有的类
$sorts = Sort::get();
return $this->getTree($sorts,0);
}
/**
* @param [sorts] $[需要被格式化的数据]
* @param pid 当前分类的父类
*/
public function getTree($sorts,$pid =0)
{
//设置一个空数组
$arr = [];
//遍历出所有的父级分类
foreach ($sorts as $k => $v) {
//判断当前分类是否为顶级类
if($v['pid'] == $pid){
//将子类赋值到顶级类的下方
$v['path'] = $v['name'];
//将值存入一个数组中
$arr[] = $v;
//遍历出所有的二级类
foreach($sorts as $x => $y){
//判断
if($v['id'] == $y['pid']){
$y['path'] ='☆---'. $y['name'];
//将获得二级类存入到数组中
$arr[] = $y;
}
}
}
}
return $arr;
}
}
F. 一条sql语句顺序查询出父类的所有子类 如下图:用的是sql Server 2008
SQL 2005及以上可以使用CTE实现递归。
withtmp(ID,Name,ParentID,Level,HierarchyCode)
as(
selectID,Name,ParentID,1,convert(varchar,convert(varchar,ParentID)+'->'+convert(varchar,ID))
from表名whereParentId=0--已知根节点是0
UNIONALL
selecta.ID,a.Name,a.ParentID,Level+1,convert(varchar,HierarchyCode+'->'+convert(varchar,a.ID))
from表名ainnerjointmpbona.ParentID=b.ID
)
select*fromtmporderbyHierarchyCode
结果如下:
G. sql 查询:无限极分类,获取父类下所有子类
这问题很有趣哦!很多公司面试经常提到!有三种办法:
1.父类子类都各自建表(不推荐)
2.子类父类同在一张表(推介)
3.还有一种做法记不清了。
下面说说第二种做法吧!
你可以在数据库中建一张表都拥有以上的字段,然后在hibernate配置文件里配置一对多的关系,自己类对自己类做一对多的关联,具体配置你可以在一些论坛网站上搜到的。然后查询时你只要按id=父类的那个id去查一遍就全出来了.
H. sql语句 查询 类别下所有子类
create table tb
(
ID int,
name varchar(20),
FID int
)
insert into tb values( 1,'一级1',0)
insert into tb values( 2,'一级2',0)
insert into tb values( 3,'二级1',2)
insert into tb values( 4,'二级2',2)
insert into tb values( 5,'三级1',4)
insert into tb values( 6,'四级1',5)
insert into tb values( 7,'二级1',1)
with tmp(id,name,fid) as
(
select id,name,fid from tb where id in (2)
union all
select tb.id,tb.name,tb.fid from tb inner join tmp on tb.fid = tmp.id
)
select distinct * from tmp order by id,fid
2 一级2 0
3 二级1 2
4 二级2 2
5 三级1 4
6 四级1 5
I. 在SQL Server中每个数据库最多可以创建多少个数据库对象,一个表最多允许多少个字
sql server 2000数据对象的系统范围,在实际应用过程中可以根据需要作适当的改变。
1、数据库:32767个数据库,最小为1MB,最大为1TB。
2、表:每个数据库最多有20亿个表。
3、列:每个表最多1024列,每列的最大字节数为8060(文本和图像列除外)。
4、索引:每个表有一个聚集索引,249个非聚集索引。一个复合索引最多有16个索引关键字。
5、触发器:每个表最多有3个触发器,分别用于插入、修改和删除等操作。
6、存储过程:一个存储过程可以有1024个参数和最多32级嵌套。
7、用户连接:32767个。
8、锁定及打开的对象:20亿个。