Foxtable(狐表)用户栏目专家坐堂 → [求助]如何写多条件关联?避免选择后记录重复


  共有3405人关注过本帖平板打印复制链接

主题:[求助]如何写多条件关联?避免选择后记录重复

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


加好友 发短信
等级:幼狐 帖子:134 积分:1047 威望:0 精华:0 注册:2014/11/24 11:07:00
[求助]如何写多条件关联?避免选择后记录重复  发帖心情 Post By:2014/12/3 11:42:00 [只看该作者]

前提:有三个表

表A(各种学校的期间对照表)的字段如下
学校类型 期间标志 期间
中专 2009 2009年
大专 2013 2013年
中专 2011 2011年
本科 2011 2011年
本科 2012 2012年
大专 2014 2014年
大专 2015 2015年
本科 2013 2013年
本科 2014 2014年
中专 2012 2012年


表B(各种学校各教学任务对照表)的字段如下
学校类型 教学任务 开始期间 结束期间
中专 语文 2009 2009
大专 英语 2013 2014
中专 英语 2009 2010
本科 微积分 2012 2014
本科 数据结构 2011 2012
大专 C语言 2013 2013
大专 线性代数 2013 2015
本科 英语 2011 2014
本科 基础化学 2012 2012
中专 概率论 2010 2011

表BC某种学校某教学任务)的字段如下
学校类型 教学任务 
本科       微积分

希望得到:
(表c所列教学任务各期间明细表,即以下表)

学校类型 教学任务    期间  期间标志 
本科       微积分     2012年 2012
本科       微积分     2013年 2013
本科       微积分     2014年 2014


拟写如下语句:
Select b.[学校类型] ,b.[教学任务] ,a.[期间] , a.[期间标志] From ({表A} a Left Join {表B} b On a.[期间标志] Between b.[开始期间] And b.[结束期间]) Left Join {表C} c On b.[学校类型] = C.[学校类型] And b.[教学任务] = c.[教学任务] 

执行sql测试时,报错如下:
两个操作符之间没有 And 在查询表达式 'a.[期间标志] Between b.[开始期间]' 中。

经查,on 后面的关联条件要用括号含住。改之后的语句如下
Select b.[学校类型] ,b.[教学任务] ,a.[期间] , a.[期间标志] From ({表A} a Left Join {表B} b On (a.[期间标志] Between b.[开始期间] And b.[结束期间])) Left Join {表C} c On b.[学校类型] = C.[学校类型] And b.[教学任务] = c.[教学任务]

但运行之后,出现重复行。成了原来的2倍记录数.

求助:
如何改写上述语句达到目的?
[此贴子已经被作者于2014-12-3 13:47:44编辑过]

 回到顶部