楼主 海洋之星 |
题目要求:利用一条sql语句得到如效果图所示效果 备注:大家可以使用其他方法,只要是批量得到的都正确。
职工表.rar |
2楼 wise |
- select B.组别,A.组长,B.组员 from (select 组别,姓名 as 组长 from [职工表$A:E] where 职务="组长") A,(select 组别,姓名 as 组员 from [职工表$A:E] where 职务<>"组长") B where B.组别=A.组别 order by B.组别
|
3楼 mn860429 |
- select a.组别,a.姓名 as 组长,b.姓名 as 组员 from [职工表$a1:e20] a,[职工表$a1:e20] b where a.职务='组长' and a.组别 =b.组别 and b.职务<>'组长'
|
4楼 海绵宝宝 |
- select a.组别,a.姓名,b.姓名 from [职工表$A1:E20] as a left join [职工表$A1:E20] as b on (a.组别=b.组别 and a.职务='组长')
|
5楼 海绵宝宝 |
应该是这样的- select a.组别,a.姓名,b.姓名 from [职工表$A1:E20] as a left join [职工表$A1:E20] as b on (a.组别=b.组别 and a.职务='组长' and b.职务='组员')
|
6楼 海绵宝宝 |
再发上一段彻底剖析这道题目思路的语句,因为是剖析,所以语句稍微长了点,哈哈- select a.组别,a.姓名 as 组长,b.姓名 as 组员 from (select * from [职工表$A1:E20] where 职务='组长') as a,(select * from [职工表$A1:E20] where 职务='组员') as b where a.组别=b.组别 order by a.组别
|
7楼 海绵宝宝 |
再发一句,希望从我发的三句中发现一点规律和心得来,嘿嘿
- select a.组别,a.姓名 as 组长,b.姓名 as 组员 from [职工表$A1:E20] as a,[职工表$A1:E20] as b where a.组别=b.组别 and a.职务='组长' and b.职务='组员'order by a.组别
|
8楼 amulee |
- select a.组别,a.姓名 as 组长,b.姓名 as 组员 from ([职工表$] a left join [职工表$] b on a.组别=b.组别 and a.姓名<>b.姓名) where a.职务="组长"
|
9楼 wjc2090742 |
定义了1个名称T。
- select a.组别,a.姓名 as 组长,b.姓名 as 组员 from T a,T b where a.职务='组长' and b.职务='组员' and a.组别=b.组别 order by a.组别
职工表.rar |
10楼 水星钓鱼 |
- select a.组别,a.姓名 as 组长,b.姓名 as 组员 from (select 组别,姓名 from [职工表$a1:e20] where 职务='组长') a ,[职工表$a1:e20] b where a.组别=b.组别 and b.职务='组员' order by a.组别
|
11楼 xyh9999 |
回复一下 见见 |
12楼 wise |
呵呵,我写法是最长的,我是按照思路一步一步地写的。 让读这代码的人比较容易理解,知道是怎么来的。 |
13楼 海洋之星 |
总结: 说明:这个题是全国计算机等级考试二级VF一道SQL题 分析: 1、从效果图上可以看出两点:(1)是查询结果按照组别进行升序进行的排序,所以我们要用到order by 短语,对其进行排序。(2)我们从组长与组员这两列字段中的记录可以看到,每条记录中没有姓名相同的,所以我们就可以得到一个where条件:c.姓名<>p.姓名,最后一点大家都想到了就是利用别名将原表换成两个数据源,分别得到组长字段和组员字段。 2、我给出来SQL语句为:- select p.组别,c.姓名 as 组长,p.姓名 as 组员 from [职工$] p ,[职工$] c where p.组别=c.组别 and c.职务="组长" and c.姓名<>p.姓名 order by p.组别
如果有不足之处,请大家多多指点,谢谢! |
14楼 zm0115 |
虽然都已经结束了,还是补充一个,:) 见笑
select a.组别,(select 姓名 from [职工表$] where 组别=a.组别 and 职务='组长') as 组长,a.姓名 from [职工表$] a where 职务='组员' order by 1,3 |
15楼 zm0115 |
职工表.rar 放个附件
这个应该比较常用,至少我经常这么干,:) 外面一个查询的值可以作为()里面查询的一个条件的。这个题目正好,每个组组长都是唯一的,组别和组长一一对应。所以可以这么用。如果有不唯一就不行了,可能产生“笛卡尔积”(好像是这么说的) |