首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

联合查询两张表如何做,来看看

2012-03-06 
联合查询两张表怎么做,来看看两张表(成员表、户主表)(户主表)字段:户主代码,姓名1张三2李四3王五(成员表)字

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


----------- ---------- -----------
1 张三 3
2 李四 2
3 王五 2

(所影响的行数为 3 行)
*/
[解决办法]
看错了
将 Num改成
  成员数
---Try:

Select
A.户主代码,A.姓名,B.成员数
From
@户主表 A
Inner Join
(Select 户主代码,Count(1) As 成员数 From @成员表 Group By 户主代码) B
On A.户主代码=B.户主代码
[解决办法]
有那么麻烦么?
不就一条语句就能搞定么
select ,用户名 Count(ID ) from 户主表
group by 用户名

这样不知道是不 是楼主想要的 如果要加条件 还可以用Having

连表用inner(left、right) join 另一个表 on 关系

热点排行
Bad Request.