首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

数据库查询有关问题

2012-01-15 
数据库查询问题数据表如下:nameidcitydate王一01北京2011-01-01王二02上海2011-01-05王三03广州2011-01-15

数据库查询问题
数据表如下:
  name id city date
  王一 01 北京 2011-01-01
  王二 02 上海 2011-01-05
  王三 03 广州 2011-01-15
  王四 04 纽约 2011-01-07
  王五 05 东京 2011-01-03
  王一 01 上海 2011-10-01
  王二 02 广州 2011-10-01
这是一张员工表,在修改员工信息时,不是改记录而是新插入一条记录,id确定一个员工,date为创建记录时间。查询某个人员信息时要查询创建时间最晚的一条。
现在我想查出每个城市的员工人数,某个员工所在城市以时间最晚记录中的城市为准,怎么查?
  城市 人数
  xxx xxx
  xxx xxx
 

[解决办法]
建议分两张表,一张员工表,一张员工信息变动记录表。。。

像你这样的话,如果我插入三条记录:

王二 02 广州 2011-10-01
王二 02 北京 2011-10-01
王二 02 上海 2011-10-01

王二所在城市以哪个为准?

只有保证一个员工同一日期只有一条记录,你的查询才有意义:

SQL code
Select City, Count(Id) Count  From (Select a.Id, a.City          From Tab a, (Select Id, Max(Cdate) Cdate From Tab Group By Id) b         Where a.Id = b.Id And a.cdate=b.cdate        ) Group By City
[解决办法]
group by + having 条件就行
不用子查询

热点排行