联合查询两张表怎么做,来看看
两张表(成员表、户主表)
(户主表)字段:
户主代码,姓名
1 张三
2 李四
3 王五
(成员表)字段:
户主代码,成员代码,性别,地址
(户主表)字段:数据
1 01
1 02
1 03
2 01
2 02
3 01
3 02
现在我想联合查询两张表得出每户的人口数有多少?既如下结果
户主代码,姓名,成员数
1 张三 3
2 李四 2
3 王五 2
------解决方案--------------------更正
select *,(select count(*) from 成员表 where 户主代码=a.户主代码) as 成员数 from 户主表 a
------解决方案-----------------------???
select a.户主代码,a.姓名,成员数=count(b.成员代码)
from 户主表 a inner join 成员表 b on a.户主代码=b.户主代码
------解决方案--------------------or:
select a.户主代码,a.姓名,count(*) 成员数
from 户主表 a left join 成员表 b on b.户主代码=a.户主代码
group by a.户主代码,a.姓名
------解决方案--------------------create table 成员表(户主代码 int,成员代码 varchar(12))
insert 成员表
select 1 , '01 '
union select 1 , '02 '
union select 1 , '03 '
union select 2 , '01 '
union select 2 , '02 '
union select 3 , '01 '
union select 3 , '02 '
create table 户主表(户主代码 int ,姓名 varchar(10))
insert 户主表
select 1 , '张三 '
union select 2 , '李四 '
union select 3 , '王五 '
select b.户主代码,a.姓名,成员数=count(b.成员代码)
from 户主表 a inner join 成员表 b on a.户主代码=b.户主代码
group by b.户主代码,a.姓名
order by b.户主代码
drop table 成员表,户主表
------解决方案--------------------Try:
Select
A.户主代码,A.姓名,B.Num
From
户主表 A
Inner Join
(Select 户主代码,Num=Count(1) From 成员表 Group By 户主代码) B
On A.户主代码=B.户主代码
------解决方案------------------------创建测试数据
Declare @成员表 Table(户主代码 Int,成员代码 Varchar(10))
Insert @成员表 select 1, '01 '
Union ALL Select 1, '02 '
Union ALL Select 1, '03 '
Union ALL Select 2, '01 '
Union ALL Select 2, '02 '
Union ALL Select 3, '01 '
Union ALL Select 3, '02 '
Declare @户主表 Table(户主代码 Int ,姓名 Varchar(10))
Insert @户主表 Select 1, '张三 '
Union All Select 2, '李四 '
Union All Select 3, '王五 '
----查询测试数据
Select * From @成员表
Select * From @户主表
---查询结果
Select
A.户主代码,A.姓名,B.Num
From
@户主表 A
Inner Join
(Select 户主代码,Num=Count(1) From @成员表 Group By 户主代码) B
On A.户主代码=B.户主代码
/*
户主代码 姓名 Num