假设我有两张表。一张是主表。一张是副表表一
ID  NAME 
1   abc
2   cde
3   esd表二
ID   CR
1    10
1    10
1    10
2    5
2    3
2    7
2    2
3    5
3    5
3    2现在我要返回 
ID  NAME CR
1   abc   30
2   cde   17
3   esd   12SQL应该怎么写?怎样用高效的执行语句
如果用存储过程的话,该如何写?
第二个问题
也是上面这个表
插入表一的一行数据,但是子表表二插入的数据条数不定。
这样SQL应该怎么写,怎样比较高效?
如果用存储过程的话,该如何写?

解决方案 »

  1.   

    select id, name, cr from table1
    left join (select sum(cr) as cr, id from talbe2 group by id) as t2
    on t2.id = table1.id好久没写的, 不敢确定
      

  2.   

    select A.ID,A.NAME,B.CR from table1 a inner join (select ID,sum( CR) CR group by di ) B ON A.ID=B.ID 
      

  3.   

    select a.[ID],a.[Name],SUM(b.CR) as CR FROM [表一] AS a INNER JOIN [表二] as b ON a.[ID]=b.[ID] group by a.[ID],a.[Name]
      

  4.   

    1楼就可以了(SQL2000以上)
    4楼(SQL7.0以上)
      

  5.   

    楼主的意思是按name分组求和…大家想复杂了吧?
    select a.id,name,sum(cr) from table1 a,table2 b group by name having a.id=b.id一个聚合函数搞定