CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

多表查询统计问题!求SQL语句!!!!

楼主hjb33(编程浪仔)2006-06-01 17:33:34 在 MS-SQL Server / 基础类 提问

在三个表中查询统计  
   
  表main1  
   
  id           empcode          
  01               6001  
  02               6002  
  03               6001  
  04               6002  
   
  表main2  
   
  id           empcode          
  01               6003  
  02               6003  
  03               6001  
  04               6002  
   
  表code  
   
  empcode     empname  
  6001             张三        
  6002             李四  
  6003             王五  
   
  表一表二结构完全一样,均是录入员录入的记录,empcode是录入员代码  
  现在想统计出每个录入员在表一和表二中录入数据的总数  
  如表:  
   
  empcode     empname       录入数量  
  6001             张三               3  
  6002             李四               3  
  6003             王五               2  
   
   
  请教用一个SQL语句如何可以得到结果  
   
  我写了单独统计一个表的语句,是可行的  
   
  select   c.empcode,c.empname,count(a.id)  
  from   main1   a,code   c  
  where   c.empcode=a.empcode  
  group   by   c.empcode  
  order   by   count(a.id)   desc  
   
  但是两个表的数量加起来该怎么做呢?  
  请高手相助! 问题点数:50、回复次数:8Top

1 楼libin_ftsafe(子陌红尘(TS for Banking Card))回复于 2006-06-01 17:35:47 得分 20

select   c.empcode,c.empname,count(a.id)  
  from   (select   *   from   main1   union   all   select   *   from   main2)   a,code   c  
  where   c.empcode=a.empcode  
  group   by   c.empcode  
  order   by   count(a.id)   descTop

2 楼paoluo(一天到晚游泳的鱼)回复于 2006-06-01 17:39:52 得分 5

group   by   c.empcode  
   
   
  改為  
   
   
  group   by   c.empcode,c.empname  
  Top

3 楼xeqtr1982(Visual C# .NET)回复于 2006-06-01 17:39:58 得分 25

declare   @T   table(id   varchar(10),empcode   int)  
  insert   into   @t   select   '01'               ,6001  
  union   all   select   '02'               ,6002  
  union   all   select   '03'               ,6001  
  union   all   select   '04'               ,6002  
   
  declare   @a   table(id   varchar(10),empcode   int)  
  insert   into   @a   select   '01'               ,6003  
  union   all   select   '02'               ,6003  
  union   all   select   '03'               ,6001  
  union   all   select   '04'               ,6002  
   
  declare   @b   table(empcode   int,empname   varchar(10))  
  insert   into   @b   select   6001             ,'张三'        
  union   all   select   6002             ,'李四'  
  union   all   select   6003             ,'王五'  
   
  select   c.empcode,c.empname,count(a.id)   as   录入数量  
  from   (select   *   from   @t   union   all   select   *   from   @a)   a,@b   c  
  where   c.empcode=a.empcode  
  group   by   c.empcode,c.empname  
  order   by   count(a.id)   descTop

4 楼xeqtr1982(Visual C# .NET)回复于 2006-06-01 17:40:58 得分 0

慢了这么多,考虑以后是否不写测试数据了Top

5 楼hjb33(编程浪仔)回复于 2006-06-01 23:03:27 得分 0

大家好,  
  你们写的语句是不是在SQLSERVER2000里运行的啊?  
  我的数据库是SYBASE的  
  我在PB里运行会出错啊!  
  Top

6 楼hjb33(编程浪仔)回复于 2006-06-01 23:11:44 得分 0

是不是sybase   数据库不支持union   all啊?  
  Top

7 楼hjb33(编程浪仔)回复于 2006-06-01 23:12:50 得分 0

还有是不是SYBASE数据库不支持FROM   后面带子集?Top

8 楼kuakesjm()回复于 2006-06-02 17:23:41 得分 0

哪就别有SyBase呀Top

相关问题

关键词

得分解答快速导航

  • 帖主:hjb33
  • libin_ftsafe
  • paoluo
  • xeqtr1982

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo