帮忙写一条sql语句,应该不是很难。表A(基本信息表) CARD_ID(主键),ANAME(姓名),ATYPE(类型,是表B的外键),AGE(年龄)
表B(类型表) BID(主键),BTYPE(类型)
表C (最新状态表) CID(主键),CARD_ID(表A外键),(DT_FW)访问日期
要求查询出: 在条件为访问日期为r,年龄为s,并按表A中的类型分组的各组人数。  

解决方案 »

  1.   

    select a.atype,count(1) from
      a inner join b on a.atype=b.bid
        inner join c on a.card_id=c.card_id
      where c.dt_fw=r and a.age=s
      

  2.   

    select a.atype,count(1) from 
      a inner join b on a.atype=b.bid 
        inner join c on a.card_id=c.card_id 
      where c.dt_fw=r and a.age=s
      group by a.atype
      

  3.   

    select b.BTYPE, count(1) from a, b, c where a.CARD_ID=c.CARD_ID and a.ATYPE=b.BID and c.DT_FW = :r and a.AGE = :s group group by a.ATYPE, b.BTYPE
      

  4.   

    select a.ATYPE, count(1) from a, b, c where a.CARD_ID=c.CARD_ID and a.ATYPE=b.BID and c.DT_FW = :r and a.AGE = :s group group by a.ATYPE;
      

  5.   


    select b.BTYPE, count(*) 
      from a, b, c 
     where a.CARD_ID=c.CARD_ID and a.ATYPE=b.BID 
       and c.DT_FW = r and a.AGE = s 
     group by b.BTYPE
      

  6.   

    a.atype=b.bid 是不是会出现冗余