有一个统计毕业生的数据表TJ和原数据表SJ
执行查询语句
select tj.专业,count(*) from sj,tj
 where sj.zy=tj.专业 group by tj.专业
当TJ中的专业的顺序不同时却得出两种不同结果,一种是:测控技术与仪器 143
电脑艺术设计 48
电气工程及其自动化 176
电子科学与技术 55
电子商务 79
电子信息工程 426
电子与信息技术 200
工业工程 62
工业设计 98
公共事业管理 54
光信息科学与技术 59
环境工程 102
会计电算化 56
会计学 150
机械设计制造及其自动 1
机械设计制造及其自动化 175
计算机科学与技术 448
计算机网络技术 128
计算机应用与维护 231
交通工程 79
教育技术学 63
市场营销 137
室内装潢设计及施工管理 26
数控技术及应用 75
通信工程 427
文秘与办公自动化 45
信息管理与信息系统 53
信息与多媒体技术 35
信息与计算科学 106
艺术设计 94
应用电子技术 80
英语 81
制冷与空调 24
自动化 118
当我把专业的顺序改变为:机械设计制造及其自动化  
电气工程及其自动化  
交通工程  
通信工程  
电子科学与技术  
电子信息工程  
计算机科学与技术  
自动化  
信息管理与信息系统  
教育技术学  
计算机应用与维护  
工业设计  
艺术设计  
市场营销  
工业工程  
会计学  
公共事业管理  
会计电算化  
英语  
信息与计算科学  
光信息科学与技术  
测控技术与仪器  
环境工程  
计算机科学与技术
机械设计制造及其自动化
电子信息工程
电子与信息技术
机电一体化
制冷与空调设备
电脑艺术设计
电子商务
计算机网络技术
应用电子技术
室内装潢设计及施工管理
材料科学与工程
这样却只有这几个数据:电脑艺术设计 48
电子商务 79
电子信息工程 426
电子与信息技术 200
机械设计制造及其自动化 175
计算机科学与技术 448
计算机网络技术 128
室内装潢设计及施工管理 26
应用电子技术 80这是为什么啊?有谁知道

解决方案 »

  1.   

    select tj.专业,count(*) from tj,sj
    where tj.专业=sj.zy group by tj.专业
      

  2.   

    如果真是这样的话,
    我想问题也许可能出在:where sj.zy=tj.专业
      

  3.   

    SQL 语句没有问题,同一语句表内容没有变化结果集也不会变化,排列顺序变化不会影响结果集,
    你应该想想是不是问题出在别的地方,是不是sj表的问题,
    --try
    select tj.专业,count(*) from tj
    group by tj.专业
      

  4.   

    把where sj.zh=tj.专业改为inner joinselect tj.专业,count(*)
    from sj inner join tj
    on sj.zy=tj.专业
    group by tj.专业如果这样不行就改成left join或righty join试试
      

  5.   

    以上方法我都试过了,但是还是不行,真郁闷啊!
    第一种顺序我是真接从SJ表里找到专业名插入到TJ中:insert into tj(专业) select distinct zy from sj
    这样得出的是正确的.第二种顺序我是从一个专业表ZY里插入到TJ中的:insert into tj(专业) select zymc from zy第二种是我想要得到的顺序,但是得不到全部结果,好像只有跟第一种顺序排列的几个专业才有结果,其它的为0.
      

  6.   

    检查两个表关联字段是否存在空格导致不一致的情况:
    ------------------------------------------------------------------------------------
    select 
        tj.专业,count(*) 
    from 
        sj,tj
    where 
        rtrim(sj.zy)=rtrim(tj.专业) 
    group by 
        tj.专业
      

  7.   

    还是不行啊,两个表的字段都是一样的.
    是不是在统计计算COUNT()只能按默认的排序才能得出结果呢?
    如果这样真的不行的话就只能用游标来实现了,那样就太麻烦了,有很多个字段都要统计的.