Foxtable(狐表)用户栏目专家坐堂 → [求助]多条件下的多表查询如何实现


  共有4178人关注过本帖树形打印复制链接

主题:[求助]多条件下的多表查询如何实现

帅哥哟,离线,有人找我吗?
meiyi
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:66 积分:569 威望:0 精华:0 注册:2016/8/4 15:18:00
[求助]多条件下的多表查询如何实现  发帖心情 Post By:2016/8/31 23:36:00 [显示全部帖子]

有“学生信息表”(ID,姓名,是否退学……)和“学生交费流水表”(姓名,ID,交费日期,金额……),两表通过“ID”和“姓名”关联。现在我想查询:学生最后一次交费日期距现在已经超过5个月的,并且“是否退学”为false的学生名单。值得说明的是每个学生有过很多次交费。如何实现呢?是用查询表吗?如果用查询表查询条件怎么写?

 回到顶部
帅哥哟,离线,有人找我吗?
meiyi
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:66 积分:569 威望:0 精华:0 注册:2016/8/4 15:18:00
  发帖心情 Post By:2016/9/1 15:17:00 [显示全部帖子]

好象没有体现出学生的“最近一次缴费日”,如何体现出每个学生的最近一次缴费日期。


 回到顶部
帅哥哟,离线,有人找我吗?
meiyi
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:66 积分:569 威望:0 精华:0 注册:2016/8/4 15:18:00
  发帖心情 Post By:2016/9/1 23:45:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:美艺数据库.rar

密码:518

问题如一楼,查询的条件是:学最最近的一次交费日期超过5个月,并且是在校学生。请问是用查询表实现吗?


 回到顶部
帅哥哟,离线,有人找我吗?
meiyi
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:66 积分:569 威望:0 精华:0 注册:2016/8/4 15:18:00
  发帖心情 Post By:2016/9/2 23:27:00 [显示全部帖子]

谢谢,真牛!


 回到顶部
帅哥哟,离线,有人找我吗?
meiyi
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:66 积分:569 威望:0 精华:0 注册:2016/8/4 15:18:00
  发帖心情 Post By:2016/9/4 11:48:00 [显示全部帖子]

在您的基础上,我作了一下调整,可电脑提示有误,您帮助看一下呗。

 

语句:

sel ect a.ID,a.姓名,a.舞种,a.班号,b.交费时间,b.金额,b.启用时间,b.备注 from {全部学生信息} as a inner join (se lect 姓名,舞种,交费时间,金额,启用时间,备注,max(启用时间) as 启用时间 from {学费记录流水} group by 姓名) as b on a.姓名 = b.姓名 and a.舞种 = b.舞种 where a.是否退学=false and DateDiff('m',b.启用时间,date()) >= 5 order by a.班号

 

电脑提示:试图执行的查询中不包含作为合计函数一部分的特定表达式 '舞种' 。

 

不知道还有没有其它错误。


 回到顶部
帅哥哟,离线,有人找我吗?
meiyi
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:66 积分:569 威望:0 精华:0 注册:2016/8/4 15:18:00
  发帖心情 Post By:2016/9/14 22:41:00 [显示全部帖子]

发现还是不行,max(启用时间)没有发挥作用,查询出所有了启用时间距今超过5个月的所有记录,而不是最近的一次启用时间超过5个月的记录。请问该怎么办?


 回到顶部
帅哥哟,离线,有人找我吗?
meiyi
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:66 积分:569 威望:0 精华:0 注册:2016/8/4 15:18:00
  发帖心情 Post By:2016/9/17 10:59:00 [显示全部帖子]

对不起,是我没有表达清楚。我想查询:学生最后一次“启用时间”超过5个月的学生信息。

查询表语句是:

se lect a.姓名,a.舞种,a.班号,a.联系电话,b.交费时间,b.金额,b.启用时间 from {全部学生信息} as a inner join (se lect 姓名,舞种,交费时间,金额,max(启用时间) as 启用时间 from {学费记录流水} group by 姓名,舞种,交费时间,金额) as b on a.姓名 = b.姓名 and a.舞种 = b.舞种 where a.是否退学 = false and DateDiff('m',b.启用时间,date()) >= 5 order by a.班号


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20160917105706.png
图片点击可在新窗口打开查看

  

结果查询出了:所有“启用时间”超过5个月的记录,而不是某个学生的最后一次“启用时间”的记录,里面有重复的学生信息。这不是我想要的。

我想要的是:查看哪个学生的最后一次“启用时间”超过了5个月。

 


 回到顶部
帅哥哟,离线,有人找我吗?
meiyi
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:66 积分:569 威望:0 精华:0 注册:2016/8/4 15:18:00
  发帖心情 Post By:2016/9/17 13:28:00 [显示全部帖子]

之前“狐狸爸爸”这样说的

 


图片点击可在新窗口打开查看此主题相关图片如下:cw2.jpg
图片点击可在新窗口打开查看

去掉“交费时间”分组后,电脑提示:

 


图片点击可在新窗口打开查看此主题相关图片如下:cw1.jpg
图片点击可在新窗口打开查看

 回到顶部