根据用于加入

时间:2018-04-05 20:49:54

标签: sql ms-access

  
    

这让我很困惑,我找不到原因:2010年     Access,我创建了2个连接查询。加入1:1大桌内连接1     在多个字段上选择子查询。其中一个领域是日期,但在     数字格式,即201701它返回100条记录。

         

加入2:相同的大表内连接相同的字段与表。该     唯一的区别是连接1是从第二个表创建的     从上面选择查询。它返回超过1000条记录。这是     结果我期待。

         

我尝试了不同的方法,发现日期字段正在引起     问题。删除该日期字段(RenewalDate)后,两个连接查询     返回相同的结果。

         

SQL

         
    SELECT POLICY, Date, Val(LEGAL) AS LEGALN, REGION 
    INTO New_Table
    FROM [TABLE_A] INNER JOIN [FILTER] 
    ON ([TABLE_A].NETWORK = [FILTER].NETWORK) 
    AND ([TABLE_A].LEGAL = [Filter].LEGAL) 
    AND ([TABLE_A].REGION = [Filter].REGION) 
    AND ([TABLE_A].AF = [Filter].AF) 
    AND ([TABLE_A].ML = [Filter].ML) 
    AND ([TABLE_A].ELGIND = [Filter].ELGIND) 
    AND ([TABLE_A].OI = [Filter].OI) 
    AND ([TABLE_A].Policy = [Filter].Policy) 
    AND ([TABLE_A].SEGMENT = [Filter].SEGMENT) 
    AND ([TABLE_A].PRODTYPE = [Filter].PRODTYPE) 
    AND ([TABLE_A].RenewalDATE = [Filter].RenewalDATE)
    WHERE (([TABLE_A].ASFactor) Is Not Null) 
    AND (([TABLE_A].ProjMed)<>9.9999) 
    AND (([TABLE_A].Proj_R)<>9.9999)
                   

当[过滤]是一个表格时,上面会产生正确的结果     当[Filter]是选择查询时,它将产生错误的结果。     Table_A明显大于[Filter]。基本上,他们有     加入的一堆字段将不会显示在查询结果中。只要     表a上的信息将显示出来。

         

有人能解释一下这是怎么回事吗?

  

1 个答案:

答案 0 :(得分:0)

您的DOB字段可能没有完全相同的值,尽管它们似乎有。

尝试添加 Where 子句而不是连接:

Where DateValue(a.DOB) = DateValue(b.DOB)

或:

Where DateDiff("d", a.DOB, b.DOB) = 0