Ⅰ sqlserver group by 多字段多条件查询
分组查询中:select后的字段必须是group by中包含的字段如下:
select userinfo.班级,count(userinfo.sex) from userinfo group by 班级,userinfo.sex;
语句的含义为:按照班级分组,统计每个班级的男、女总数
Ⅱ 多层次的人员层级架构,下属层级是不确定的,在sqlserver2005中怎么穷尽找到其所有下属呢
这个问题太宽泛,具体的还的看你的组织机构表的设计
目前常见的解决办法有如下方式
1、在表设计时候加入冗余字段,维护层级关系 ,如1.2.3.4,通过模糊查询即可查询出全部的下级 like '1.%'
2、通过递归的方式,2005 开始支持cte,
范例如下:
with FullPathBuilder as
(
select Name
,Id from orgTable b
where b.ParentId is null
union all
select b.Name ,b.Id
from orgTable b join FullPathBuilder on b.parentId = FullPathBuilder.Id
)
select * from FullPathBuilder
Ⅲ sqlserver查询树形结构的所有子节点
用标准sql的with实现递归查询(sql2005以上肯定支持,sql2000不清楚是否支持):
with subqry(id,name,pid) as (
select id,name,pid from test1 where id = 5
union all
select test1.id,test1.name,test1.pid from test1,subqry
where test1.pid = subqry.id
)
select * from subqry;
Ⅳ 如何做SqlServer 数据查询优化!
一、建立索引
二、建立存储过程
三、只查询您所需要的数据,不要把所有数据都查询出来,防止数据冗余。
四、对于大量及海量数据一般还要建立分区
Ⅳ SQL如何在查询结果里再次查询
做法:可以使用括号“(select查询子句)"套嵌一个查询结果。语法格式:select columnlist... from (select子句) table_name where 。注意:”)“ 后面需要给查询结果指定一个名称table_name,名称不要与其他列名称相同,增加SQL语句的可读性。
拓展:
1、SQL语言,是结构化查询语言(StructuredQueryLanguage)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
2、SQL语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言作为数据输入与管理的接口。SQL语言语句可以嵌套,这使他具有极大的灵活性和强大的功能。
3、结构化查询语言SQL(STRUCTURED QUERY LANGUAGE)是最重要的关系数据库操作语言,并且它的影响已经超出数据库领域,得到其他领域的重视和采用,如人工智能领域的数据检索,第四代软件开发工具中嵌入SQL的语言等。
Ⅵ MS SQLServer 多级父子关系数据查询
加多一列层级码,会简单很多比如亚洲用‘01’ 中国用‘0101’,北京用‘010101‘,海定用‘01010101’,东城用’01010102‘
这样语句可以
select id as col1,(select name from 表 where code = SubString(a.Code, 1,2)) as col2,
(select name from 表 where code = SubString(a.Code, 3,2)) as col3,
(select name from 表 where code = SubString(a.Code, 5,2)) as col4,
(select name from 表 where code = SubString(a.Code, 7,2)) as col5
from 表 a where Type = 'Distric'
不然
(select d.name from 表 b, 表 c, 表 d where a.parentid = b.id and b.parentid = c.id
and c.parentid = d.id) as col2,...
写起来比较麻烦
Ⅶ sqlserver 递归查询
CREATE TABLE #tb1(stuId INT,stuName VARCHAR(30),teaId INT);
INSERT INTO #tb1 (stuId,stuName,teaId)
VALUES(1,'zhou',0),(2,'kong',0),(3,'hong',2),(4,'zhang',1),(5,'liu',4),
(6,'zhao',5),(7,'zheng',6),(8,'wei',7)
;WITH cte AS (
SELECT t.stuId,t.stuName,t.teaId FROM #tb1 AS t
WHERE t.stuId=8
UNION ALL
SELECT t.stuId,t.stuName,t.teaId FROM cte AS c
JOIN #tb1 AS t ON c.teaId=t.stuId
)
SELECT * FROM cte
Ⅷ 关于sqlserver递归查询
你的意思没特别看懂,但是在ORACLE里面的递归语法是:
select * from tab ...start with ... connect by col_parent...
你可以查一下start with ,connect 的语法
Ⅸ 有层级的,怎么用sql查询返回结果
树形结构的查询。
你需要说明一下, 你的数据库是什么数据库。
Oracle 使用 START WITH CONNECT BY 语句实现树状查询
DB2 与 MySQL 使用 CTE 递归处理来实现。
Ⅹ sql server 中如何实现查找下级分类以及下下级
在文件 includes/lib_goods.php 最后加上
//***调用商品分类指定分类下级分类
functionget_parent_id_tree($parent_id)
{
$three_c_arr=array();
$sql='SELECTcount(*)FROM'.$GLOBALS['ecs']->table('category')."WHEREparent_id='$parent_id'ANDis_show=1";
if($GLOBALS['db']->getOne($sql))
{
$child_sql='SELECTcat_id,cat_name,parent_id,is_show'.
'FROM'.$GLOBALS['ecs']->table('category').
"WHEREparent_id='$parent_id'ANDis_show=1ORDERBYsort_orderASC,cat_idASC";
$res=$GLOBALS['db']->getAll($child_sql);
foreach($resAS$row)
{
if($row['is_show'])
$three_c_arr[$row['cat_id']]['id']=$row['cat_id'];
$three_c_arr[$row['cat_id']]['name']=$row['cat_name'];
$three_c_arr[$row['cat_id']]['url']=build_uri('category',array('cid'=>$row['cat_id']),$row['cat_name']);
}
}
return$three_c_arr;
}
声明后用$smarty调用,就是在index.php中加上下面一句:
$smarty->assign('get_parent_id16_tree',get_parent_id_tree(16));//调用父级分类6的下级分类
最后就可以在index.dwt模板文件里开始调用了
<!--{foreachfrom=$get_parent_id16_treeitem=list}-->
<ahref="http://chenlihong89791781.blog.163.com/{$list.url}"target="_blank">{$list.name|truncate:15:true}</a>
|<!--{/foreach}--></div>