IT人
相关图书

用SQL语句查询的问题?

所属分类:其他数据库开发 Access
-----------------------------------------

--表 s
SNO        sname
---------- ---------
C005       张雷   
C008       王宁                  
A041       周光明                 
M038       李霞霞                
R098       钱欣 
--表 sc

sno                  cno                  grage
------------------------------------------------ 
A041                 CC110                52.0
A041                 CC112                92.0
A041                 ME234                92.5
A041                 MS211                90.0
C005                 CC112                84.0
C005                 CS202                82.0
C005                 MS200                40.0
M038                 CC110                56.0
M038                 ME234                85.0

--如何查询sno,sname, 以及按照sno来计算的grage的和
--我用这个语句可以的
select s.sname,sum(grage) from s inner join sc on s.SNO=sc.sno join c on sc.cno=c.cno group by s.sname
--但是我这样写就不可以了这是为什么啊???
select s.sno,s.sname,sum(grage) from s inner join sc on s.SNO=sc.sno join c on sc.cno=c.cno group by s.sname




----------------------------------------------------------------------

--s.sno要么在group by 中,要么使用聚合函数

--try

select s.sno,s.sname,sum(grage) 
from s 
inner join sc on s.SNO=sc.sno 
join c on sc.cno=c.cno 
group by s.sno,s.sname

--------------------------------------------------------

--Access使用的是jet-SQL,与T-SQL不同,每关联一个表,需要加一对()

select s.sno,s.sname,sum(grage) 
from ((s 
      inner join sc on s.SNO=sc.sno )
      join c on sc.cno=c.cno )
group by s.sno,s.sname

--------------------------------------------------------

s.sno必须在group by 中
select s.sno,s.sname,sum(grage)
from (s inner join sc on s.SNO=sc.sno)
inner join c on sc.cno=c.cno
group by s.sno,s.sname


--------------------------------------------------------

--Access使用的是jet-SQL,与T-SQL不同,每关联一个表,需要加一对()

select s.sno,s.sname,sum(grage) 
from ((s 
      inner join sc on s.SNO=sc.sno )
      inner join c on sc.cno=c.cno )    
group by s.sno,s.sname

--------------------------------------------------------

select s.sname,sum(grage) 
select s.sno,s.sname,sum(grage) 
两句差别在“s.sno” 作者问题也是这。
sno                  cno                  grage
------------------------------------------------ 
A041                 CC110                52.0
A041                 CC112                92.0
A041                 ME234                92.5
A041
 看看 "A041"出现了多次,所以在并成一行时出现问题。让数据库如何表达出来多个A041?
上面的恢复都写了group by sno 就是这个道理。让sno 分组,这样就只一个a041了。问题解决。 你不会不给分吧。>_<
相关问题
    Copyright ◎ 1998 - 2007 编程资料网 All Rights Reserved