首页 新闻 搜索 专区 学院

sql 语句两表联合查询请教,在线等,谢谢。

0
悬赏园豆:20 [已解决问题] 解决于 2009-09-22 14:51

A表字段(区县表)

QuXianId  QuXianName

1      宝山

2      长宁

3      宗明

4      徐汇

...      ...

19      上海周边

B表字段,和A表中相同的QuXianId字段(景点表吧)

Guid  QuXianId  Title  Desc

1    4    万体馆  八万人体育馆

2    1    宝山    。。。

两个表联合

QuXianId  Num

1      0

2      0

3      0

...

19      0

统计出所有区的景点 数量

疑惑:1.表B中如果没有A中QuXianId值,如何显示为0?

select QuXian_id,num=count(*) from word_data where QuXian_id =10
group by quxian_id

然后循环查询出所有,明显的性能问题。

不知道有其他更好的方法,请大家指点,谢谢。

 

问题补充: #邀月大哥问答错误。 需要显示出各个区的景点数量的一个sql视图。 有则显示个数,没有则显示为0
21天后的主页 21天后 | 初学一级 | 园豆:3
提问于:2009-09-22 14:00
< >
分享
最佳答案
0

为什么要循环?

select  QuXian_ID, Count(1) as TopCount  from B 
--where B. QuXian_ID in (Select QuXian_ID from A) B的ID肯定在A,反之未必
group by QuXian_ID
union all
select QuXian_ID,0 as TopCount from A where A.QuXian_ID not in (Select distinct QuXian_ID from B)
order by TopCount desc


这个查询有问题?你给些测试数据。

收获园豆:20
邀月 | 高人七级 |园豆:25339 | 2009-09-22 14:14
其他回答(1)
0

可以这样写的哦,先对B表做统计,然后再与A表关联出结果。你试试

select QuXianId,isnull(b.num,0) as num from 区县表 a
left join
(
select QuXianId,count(*) as num from 景点表
group by QuXianId
) b on a.QuXianId=b.QuXianId

Alex_QY1987 | 园豆:1888 (小虾三级) | 2013-01-08 13:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册