select a.*,e.number from a left join (select c.cid,c.bid,sum(number) as number from c where c.bid in (select a.*,b.* from a ,b where a.code = b.code) group by c.cid,c.bid) e on a.bid = e.bid大概就是这样的吧

解决方案 »

  1.   

    (select c.cid,c.bid,sum(number) as number from c where c.bid in (select a.*,b.* from a ,b where a.code = b.code) group by c.cid,c.bid) e应当修正并简化为
    (select bid,sum(number) as number from c group by c.bid) e另外,lz没有明确说出B表中,code与bid是否1-1关系
    如果是
    整个语句似乎应当为:
    select a.*,e.number from a inner join b On a.code=b.code
    left join (select bid,sum(number) as number from c group by c.bid) e on b.bid = e.bid
      

  2.   

    标准答案:
    SELECT a.*, e.number   
    FROM  a, b,
    (SELECT c.bid, SUM(number) AS number FROM c GROUP BY c.bid )AS e
    WHERE a.code = b.code
    AND b.bid = c.bid