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


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

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

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


加好友 发短信
等级:超级版主 帖子:109463 积分:556971 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/1 15:32:00 [显示全部帖子]

Dim sql As String ="sel ect {学生信息表}.id,{学生信息表}.姓名,{学生信息表}.其他列1,{学生信息表}.其他列2,{学生交费流水表}.缴费日期,{学生交费流水表}.缴费金额 from {学生信息表} INNER JOIN {学生缴费流水表} on {学生信息表}.id = {学生缴费流水表}.id  where {学生信息表}.id not In (Sel ect id from {学生交费流水表} Where 缴费日期 > #"  & dt & "#) order by 缴费日期 desc"

如果想要准确的sql最好上传例子测试

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


加好友 发短信
等级:超级版主 帖子:109463 积分:556971 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/2 9:07:00 [显示全部帖子]

用以下sql创建查询表,注意把“sel ect ”里的空格去掉

sel ect a.*,b.交费时间 from {全部学生信息} as a inner join (sel ect 姓名,max(交费时间) as 交费时间 from {学费记录流水} group by 姓名) as b on a.姓名 = b.姓名 where a.是否退学=false and DateDiff('m',b.交费时间,date()) >= 5

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


加好友 发短信
等级:超级版主 帖子:109463 积分:556971 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/14 22:50:00 [显示全部帖子]

所有就没必要分组了

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

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


加好友 发短信
等级:超级版主 帖子:109463 积分:556971 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/17 11:08:00 [显示全部帖子]

你的分组条件决定了就是这样的结果。分组条件去掉“交费时间”

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


加好友 发短信
等级:超级版主 帖子:109463 积分:556971 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/17 14:32:00 [显示全部帖子]

既然知道,那就要把sel ect里的“交费时间”也要去掉啊,如果sel ect必须要包含这个列,也就只能是12楼的结果


 回到顶部