表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 请问要查询语句应该怎样写?
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 请问要查询语句应该怎样写?
select a.id,a.name,count(*) as 学科数
from a join b on a.id = b.aid
group by a.id,a.name
FROM A,B
WHERE A.ID = B.AID
GRUOP BY A.ID, A.NAME
select a.id,a.name,count(*) as 学科数
from a left join b on a.id = b.aid
group by a.id,a.name
[count]=(select count(*) from B where Aid=A.id)
FROM A
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 行受影响)*/
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