+ -
当前位置:首页 → 问答吧 → 求数据库达人指点小弟一条查询语句...在线等!

求数据库达人指点小弟一条查询语句...在线等!

时间:2011-11-26

来源:互联网

表A
Id 姓名 地区Id 登记时间
1 张三 1 2011
2 李四 2 2011
3 王五 2 2011
4 赵六 3 2010
5 小明 3 2011
6 小王 4 2011


============================================
表B
街区Id 街区名 城市Id
1 西城区 1
2 浦东新区 2
3 福田区 3
4 裕华区 4
==============================================
表C
城市Id 城市名
1 北京市
2 上海市
3 深圳市
4 石家庄市
=============================================
期望查询结果
地区名 城市名 人数 等级时间
西城区 北京市 1 2011
浦东新区 上海市 2 2011
福田区 深圳市 1 2010
福田区 深圳市 1 2011
裕华区 石家庄市 1 2011
============================================
上面3个表和一个期望查询结果就是我的问题!求高人不惜赐我SQL语句把 !万分感谢~~
注:我用的是SQL2008数据库

作者: KamiyaLee   发布时间: 2011-11-26

SQL code

SELECT 
    b.街区名,c.城市名,COUNT(*) AS [人数],a.登记时间 
FROM A 
INNER JOIN B ON a.地区Id=b.街区Id
INNER JOIN C ON c.城市Id=b.城市Id
GROUP BY b.街区名,c.城市名,a.登记时间

作者: roy_88   发布时间: 2011-11-26

SQL code

select b.地区名,c.城市名,count(a.id) as 人数,year(a.登记时间) as 登记时间
from a join b on a.地区id = b.地区id
       join c on b.城市id = c.城市id
group by b.地区名,c.城市名,year(a.登记时间)

作者: AcHerat   发布时间: 2011-11-26

SQL code
select 地区名,城市名,人数=count(*),登记时间
from 表A a,表B b,表C c
where a.地区Id=b.街区Id and b.城市Id=c.城市Id
group by 地区名,城市名,登记时间

作者: ssp2009   发布时间: 2011-11-26

SQL code
select 
 地区名,城市名,count(1) as 人数,登记时间
from 表A a,表B b,表C c
where
 a.地区Id=b.街区Id and b.城市Id=c.城市Id
group by
 地区名,城市名,登记时间

作者: fredrickhu   发布时间: 2011-11-26

引用 4 楼 fredrickhu 的回复:
SQL code
select
地区名,城市名,count(1) as 人数,登记时间
from 表A a,表B b,表C c
where
a.地区Id=b.街区Id and b.城市Id=c.城市Id
group by
地区名,城市名,登记时间


COUNT(1)是什么意思啊?

作者: KamiyaLee   发布时间: 2011-11-26

引用 5 楼 kamiyalee 的回复:

引用 4 楼 fredrickhu 的回复:
SQL code
select
地区名,城市名,count(1) as 人数,登记时间
from 表A a,表B b,表C c
where
a.地区Id=b.街区Id and b.城市Id=c.城市Id
group by
地区名,城市名,登记时间


COUNT(1)是什么意思啊?

count(1)等同於count(*)
取記錄count(任何值)等同於count(*) --null值除外

作者: roy_88   发布时间: 2011-11-26

引用 6 楼 roy_88 的回复:

引用 5 楼 kamiyalee 的回复:

引用 4 楼 fredrickhu 的回复:
SQL code
select
地区名,城市名,count(1) as 人数,登记时间
from 表A a,表B b,表C c
where
a.地区Id=b.街区Id and b.城市Id=c.城市Id
group by
地区名,城市名,登记时间


COUNT(1)是什么意思啊……

如果我的表A是:
表A
Id 姓名 地区Id 登记时间
1 张三 1 2011-1-2
2 李四 2 2011-2-3
3 王五 2 2011-4-5
4 赵六 3 2010-7-7
5 小明 3 2011-4-8
6 小王 4 2011-8-9

那上面的SQL就不好使了!查出的结果按照时间一分组count(×)就没有用了!因为时间中月份可能也不同
就会变成:
地区名 城市名 人数 等级时间
西城区 北京市 1 2011
浦东新区 上海市 1 2011
浦东新区 上海市 1 2011
福田区 深圳市 1 2010
福田区 深圳市 1 2011
裕华区 石家庄市 1 2011

作者: KamiyaLee   发布时间: 2011-11-26