日期:2014-05-18  浏览次数:20619 次

联合查询两张表怎么做,来看看
两张表(成员表、户主表)
(户主表)字段:
户主代码,姓名
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