如何用一条SQL查询出几个从表的记录数?

fleamboy 2012-01-06 09:59:01
有3张表,
TB1(id,name)(主表)
数据如下:
1,aaa
2,bbb
3,ccc
TB2(id,pid,info1)
1,1,a11
2,1,a12
3,2,a21
4,2,a22
TB3(id,pid,info2)
1,1,b11
2,1,b12
3,2,b31
4,3,b32
用一条SQL查询出如下结果:
id,name,count(TB2关联记录数),count(TB3关联记录数)
1,aaa,2,2
2,bbb,2,1
3,ccc,0,1
...全文
130 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
勿勿 2012-01-06
  • 打赏
  • 举报
回复
--TB1(id,name)(主表)
--数据如下:
--1,aaa
--2,bbb
--3,ccc
--TB2(id,pid,info1)
--1,1,a11
--2,1,a12
--3,2,a21
--4,2,a22
--TB3(id,pid,info2)
--1,1,b11
--2,1,b12
--3,2,b31
--4,3,b32
--用一条SQL查询出如下结果:
--id,name,count(TB2关联记录数),count(TB3关联记录数)
--1,aaa,2,2
--2,bbb,2,1
--3,ccc,0,1
if OBJECT_ID('TB1') IS not null
drop table TB1
GO
create table TB1 (id int,name varchar(50))
insert into TB1 values(1,'aaa')
insert into TB1 values(2,'bbb')
insert into TB1 values(3,'ccc')
if OBJECT_ID('TB2') IS not null
drop table TB2
GO
create table TB2 (id int,pid int,info1 varchar(50))
insert into TB2 values(1,1,'a11')
insert into TB2 values(2,1,'a12')
insert into TB2 values(3,2,'a21')
insert into TB2 values(4,2,'a22')
if OBJECT_ID('TB3') IS not null
drop table TB3
GO
create table TB3 (id int,pid int,info2 varchar(50))
insert into TB3 values(1,1,'b11')
insert into TB3 values(2,1,'b12')
insert into TB3 values(3,2,'b31')
insert into TB3 values(4,3,'b32')


--id,name,count(TB2关联记录数),count(TB3关联记录数)
--1,aaa,2,2
--2,bbb,2,1
--3,ccc,0,1
select TB1.id,TB1.name,(select count(*) from TB2 WHERE TB1.id=TB2.pid )AS 'count(TB2关联记录数)',(select count(*) from TB3 WHERE TB1.id=TB3.pid ) AS 'count(TB3关联记录数)' from TB1


id name count(TB2关联记录数) count(TB3关联记录数)
----------- -------------------------------------------------- --------------- ---------------
1 aaa 2 2
2 bbb 2 1
3 ccc 0 1

(3 行受影响)
snbxp 2012-01-06
  • 打赏
  • 举报
回复
这个值50分吗,我捡这个便宜?

select tb1.ID,tb1.Name,count2,count3 from tb1
left join
(select pid,count(1) as count2 from tb2 group by pid)A on A.pid=tb1.id
left join
(select pid,count(1) as count3 from tb3 group by pid)B on B.pid=tb1.id
唐诗三百首 2012-01-06
  • 打赏
  • 举报
回复

create table TB1
(id int, name varchar(6))

insert into TB1
select 1, 'aaa' union all
select 2, 'bbb' union all
select 3, 'ccc'

create table TB2
(id int, pid int, info1 varchar(6))

insert into TB2
select 1,1,'a11' union all
select 2,1,'a12' union all
select 3,2,'a21' union all
select 4,2,'a22'

create table TB3
(id int, pid int, info2 varchar(6))

insert into TB3
select 1,1,'b11' union all
select 2,1,'b12' union all
select 3,2,'b31' union all
select 4,3,'b32'


select id,name,
(select count(*) from TB2 where TB2.pid=TB1.id) 'TB2关联记录数',
(select count(*) from TB3 where TB3.pid=TB1.id) 'TB3关联记录数'
from TB1

id name TB2关联记录数 TB3关联记录数
----------- ------ ----------- -----------
1 aaa 2 2
2 bbb 2 1
3 ccc 0 1

(3 row(s) affected)
勿勿 2012-01-06
  • 打赏
  • 举报
回复
表关联查询。
资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 松下电工字压力传感器用户手册详细介绍了DP-100系列字压力传感器,涵盖其技术参、操作方法及适用场景等,适用于各类需要精准压力测量的工业环境。 双屏显示:主屏与输动作同步,可同时显示当前值和基准值,便于实时监控与调整。显示屏为12段字母字显示,字清晰易读。 三色指示:屏幕颜色随传感器状态变化(红、绿、橙),便于快速判断工作状态。 紧凑结构:尺寸仅□30mm,适合空间狭窄的安装环境。 多种操作模式:提供RUN模式(日常操作)、菜单设定模式(深入设置如输模式切换)及PRO模式(高级功能如应差调整、复制设定)。 安全认证:DP-101(A)/102(A)型号通过特定认证,确保产品安全可靠。 复制功能:可通过据通信将主传感器设定内容复制到其他传感器,减少人工设定错误,节省时间。 高性能传感:具备高精度,分辨率1/2,000,反应时间2.5ms(最长5,000ms可调),温度特性±0.5%F.S.,重复精度±0.1%F.S. 电子元件吸附检测:监测吸盘是否成功吸附电子元件。 总压力监测:测量管道或容器内的压力水平。 空气泄漏检测:通过压力变化检测泄漏情况。 DP-101□:适用于低压环境(-100kPa至100kPa)。 DP-102□:适用于高压环境(0kPa至1MPa)。 订购时需根据实际需求选择合适型号,考虑传感器的适用范围和工作条件。手册提供详细订购流程及注意事项,包括相关认证信息(如韩国S标志)。 复制功能:通过据通信将主传感器设定复制到其他传感器,支持多种设定模式,避免设定错误,节省时间。 操作模式:RUN模式用于日常监控,菜单设定模式用于深入设置,PRO模式提供高级功能。 使用前需仔细阅读手册,了解各功能使用方法。遵循安全指南,正确安装和使用传感器,避免损坏。对于

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧