日期:2014-05-17  浏览次数:20374 次

求一SQL语句 急!!!!
a表:id,name
b表:id,a_id(外键)
我现在要查a表中安装了b的记录数

比如a表记录 
1,name1
2,  name2
b表记录
1,1
那我要查的总记录数为2,安装了b的记录数为1

必须一条SQL语句搞定, 谢谢了
sql

------解决方案--------------------
select COUNT(*) as 总记录,(select COUNT(*) from b where a.id=b.a_id) as 安装记录数
from a

------解决方案--------------------
select count(A.ID)
from A join B on A.ID = B.a_id

是不是这意思



引用:
a表:id,name
b表:id,a_id(外键)
我现在要查a表中安装了b的记录数

比如a表记录 
1,name1
2,  name2
b表记录
1,1
那我要查的总记录数为2,安装了b的记录数为1

必须一条SQL语句搞定, 谢谢了

------解决方案--------------------
;with a(id,name) as
(
select 1,'name1'
union all select 2,'name2'
),
b(id,a_id) as
(
select 1,1
)
select COUNT(*) as 总记录,(select COUNT(b.a_id) from b inner join a on a.id=b.a_id) 安装记录数
from a

------解决方案--------------------
/*
总记录 安装记录数
2 1
*/

------解决方案--------------------


if object_id('Tempdb..#a') is not null drop table #a
if object_id('Tempdb..#b') is not null drop table #b
create table #a(
[id] int identity(1,1) not null,
[name] nvarchar(100) null
)

create table #b(
[id] int identity(1,1) not null,
[a_id] int null
)

--a表插入6条记录
Insert Into #a
select 'name1' union all
select 'name2' union all
select 'name3' union all
select 'name4' union all
select 'name5' union all
select 'name6'