|M| 两个表操作 大家看看SQL要怎么写
队表 
 ID      队名      人数 
 1         A队         3 
 2         B队         1 
 队员表 
 ID      队名      性别   姓名 
 1         A队         男         小王 
 2         A队         女         小红 
 3         A队         男         小李 
 3         B队         男         小张      
 现在要删除B表中性别为男的队员再更新队表中的为数   
 谢谢
------解决方案----------------------我晕,忘了些删除条件,Sorry:   
 update a set a.人数 = a.人数 - b.人数 from  
 队表 a,  
 (select 队名, 人数 = count(*) from 队员表 where  '性别 ' =  '男 ' group by 队名) b 
 where a.队名 = b.队名   
 delete 队员表 where  '性别 ' =  '男 ' 
------解决方案--------------------不懂!请教!
------解决方案--------------------zyciis381() ( ) 信誉:100  2007-8-14 1:56:48  得分: 0              
 这上面是一条SQL吗 
 我想一次就OK 
 谢谢       
 --------------- 
 這個是兩個動作,一條語句實現不了。   
 或者寫一條刪除語句,再在队员表上建立一個觸發器來更新队表。
------解决方案------------------------创建测试数据 
 declare @t1 table(ID int,队名 varchar(10),人数 int) 
 insert @t1 
 select 1,    'A队 ',   3 union all 
 select 2,    'B队 ',   1 
 declare @t2 table(ID int,队名 varchar(10),性别 varchar(5), 姓名 varchar(10)) 
 insert @t2 
 select 1,    'A队 ',    '男 ',    '小王 ' union all 
 select 2,    'A队 ',    '女 ',    '小红 ' union all 
 select 3,    'A队 ',    '男 ',    '小李 ' union all 
 select 3,    'B队 ',    '男 ',    '小张 '    
 ----删除B表 
 delete from @t2 where 性别 =  '男 ' 
 ----更新A表 
 update a set 人数 = (select count(*) from @t2 where 队名 = a.队名 ) 
 from @t1 as a 
 ----如果只想更新A表而不删除B表 
 update a set 人数 = (select count(*) from @t2 where 队名 = a.队名 and 性别  <>   '男 ' ) 
 from @t1 as a   
 ----查看A表 
 select * from @t1   
 /*结果 
 ID          队名         人数           
 ----------- ---------- -----------  
 1           A队         1 
 2           B队         0 
 */ 
------解决方案------------------------例子---- 
 create table t1(ID int,队名 varchar(10),人数 int) 
 insert t1 
 select 1,    'A队 ',   3 union all 
 select 2,    'B队 ',   1 
 create table t2(ID int,队名 varchar(10),性别 varchar(5), 姓名 varchar(10)) 
 insert t2 
 select 1,    'A队 ',    '男 ',    '小王 ' union all 
 select 2,    'A队 ',    '女 ',    '小红 ' union all 
 select 3,    'A队 ',    '男 ',    '小李 ' union all 
 select 3,    'B队 ',    '男 ',    '小张 '    
 go   
 ---建个触发器,用来自动更新 
 create trigger t_auto on t2 
 for delete 
 as  
 begin 
 	update a set 人数=(select count(*) from t2 where 队名 = a.队名 ) from t1 a 
 end   
 go      
 delete from t2 where 性别 =  '男 ' 
 select * from t1   
 drop table t1,t2     
 /*           结果 
 ID          队名         人数           
 ----------- ---------- -----------  
 1           A队         1 
 2           B队         0 
 */