表A
id name
1001 张三
1002 李四

表B
id books Aid
a01 语文 1001
a02 数学 1001
a03 英语 1002要求查询结果
id name 学科
1001 张三 2
1002 李四 1 错误语句:SELECT A.ID, A.NAME, COUNT(B.AID) FROM A,B GRUOP BY A.ID, A.NAME 请问要查询语句应该怎样写?

解决方案 »

  1.   


    select a.id,a.name,count(*) as 学科数
    from a join b on a.id = b.aid
    group by a.id,a.name
      

  2.   

    SELECT A.ID, A.NAME, COUNT(B.AID) 
    FROM A,B 
    WHERE A.ID = B.AID
    GRUOP BY A.ID, A.NAME
      

  3.   


    select a.id,a.name,count(*) as 学科数
    from a left join b on a.id = b.aid
    group by a.id,a.name
      

  4.   

    SELECT ID, NAME,
           [count]=(select count(*) from B where Aid=A.id)
     FROM A 
      

  5.   

    create table A(id varchar(4), name varchar(4)) 
    insert a
    select 1001 ,'张三' union all
    select 1002 ,'李四'create table B(id varchar(4), books varchar(4),Aid varchar(4))
    insert b
    select 'a01','语文', '1001'  union all 
    select 'a02','数学', '1001'  union all 
    select 'a03','英语', '1002'select a.id,a.name,count(*) as 学科
    from a left join b on a.id=b.aid
    group by a.id,a.name/*
    id   name 学科
    ---- ---- -----------
    1001 张三   2
    1002 李四   1(2 行受影响)*/
      

  6.   

    create table A(id varchar(4), name varchar(4)) 
    insert a
    select 1001 ,'张三' union all
    select 1002 ,'李四' union all
    select 1003 ,'陈五'create table B(id varchar(4), books varchar(4),Aid varchar(4))
    insert b
    select 'a01','语文', '1001'  union all 
    select 'a02','数学', '1001'  union all 
    select 'a03','英语', '1002'select a.id,a.name,count(books) as 学科
    from a left join b on a.id=b.aid
    group by a.id,a.name order by a.id/*
    id   name 学科
    ---- ---- -----------
    1001 张三   2
    1002 李四   1
    1003 陈五   0(3 行受影响)*/drop table a,b