当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 请教个sql查询问题
帖子发表于 : 2015-11-30 20:41 
头像

注册: 2006-02-10 16:36
帖子: 2810
系统: Xubuntu14.04/Deepin
送出感谢: 15
接收感谢: 28
有两个表 员工表 和 调整记录表,属于一对多关系。结构如下

员工表
---------------------------
员工ID 姓名
---------------------------
1 张三
2 李四
3 王五


调整记录表
------------------------------
ID 员工ID 日期 岗位
------------------------------
1 1 2015-6-6 甲车间
2 2 2015-6-6 乙车间
3 3 2015-6-6 丙车间
4 1 2015-10-1 乙车间
5 2 2015-10-2 丙车间
6 3 2015-10-3 甲车间

现在想生成一个各个员工最新岗位状况的表,形如

1 张三 乙车间 2015-10-1
2 李四 丙车间 2015-10-2
3 王五 甲车间 2015-10-3

这样的select语句该如何写呢?


_________________
友帮拓,真难听。有没有接触官方的老大?给改了吧!
一直想找一个在linux下的Visual FoxPro/access桌面数据库。MUIBase还算是最相近的。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 请教个sql查询问题
帖子发表于 : 2015-12-02 12:17 
头像

注册: 2008-08-13 8:48
帖子: 26391
地址: 东海硇州,一双管钥。
系统: Fundu i64
送出感谢: 50
接收感谢: 344
代码:
SELECT u.UserID, u.Username, d.Date, d.offer FROM User AS u INNER JOIN Date AS d ON u.UserID=d.UserID;

连接查询。 :em01


_________________
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 请教个sql查询问题
帖子发表于 : 2015-12-03 13:28 
头像

注册: 2008-09-18 13:11
帖子: 2781
送出感谢: 1
接收感谢: 453
和子查询连接
代码:
select a."姓名",b."岗位",b."日期" from 员工表 a left join (select "员工ID", "岗位", "日期" from 调整记录表 where "ID" in (select max("ID") "ID" from 调整记录表 group by "员工ID")) b on a."员工ID" = b."员工ID";

如果用sqlite,可以简化掉一个select



_________________
评价: 3.7% 百草谷居士
 
页首
 用户资料  
 
4 楼 
 文章标题 : Re: 请教个sql查询问题
帖子发表于 : 2015-12-03 16:46 
头像

注册: 2006-02-10 16:36
帖子: 2810
系统: Xubuntu14.04/Deepin
送出感谢: 15
接收感谢: 28
我觉得应该是
代码:
select a."姓名",b."岗位",b."日期" from 员工表 a left join (select "员工ID", "岗位", "日期" from 调整记录表 where "日期" in (select max("日期") "ID" from 调整记录表 group by "员工ID")) b on a."员工ID" = b."员工ID";


试试


_________________
友帮拓,真难听。有没有接触官方的老大?给改了吧!
一直想找一个在linux下的Visual FoxPro/access桌面数据库。MUIBase还算是最相近的。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 请教个sql查询问题
帖子发表于 : 2015-12-03 22:23 
头像

注册: 2008-09-18 13:11
帖子: 2781
送出感谢: 1
接收感谢: 453
你这样是不对的。如果你要用日期,则应该同时把员工ID一同取出,才能保证唯一性。否则遇到下面这种数据会出错
------------------------------
ID 员工ID 日期 岗位
------------------------------
1 1 2015-6-6 甲车间
2 2 2015-6-6 乙车间
3 1 2015-6-7 乙车间

从你给的数据看,ID字段的数据是无重复的,而且越新加入的调整记录,其ID值也越大。
所以 select max("ID") "ID" from 调整记录表 group by "员工ID" 就足够找出每一个员工最近的一条记录了



_________________
评价: 3.7% 百草谷居士
 
页首
 用户资料  
 
6 楼 
 文章标题 : Re: 请教个sql查询问题
帖子发表于 : 2015-12-04 6:50 
头像

注册: 2006-02-10 16:36
帖子: 2810
系统: Xubuntu14.04/Deepin
送出感谢: 15
接收感谢: 28
你说的很对,我只考虑了“最近日期”这个现实条件,没有想到在数据库实现上,其实还有一个ID可以同时起到最近日期这个功能。


_________________
友帮拓,真难听。有没有接触官方的老大?给改了吧!
一直想找一个在linux下的Visual FoxPro/access桌面数据库。MUIBase还算是最相近的。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译