从Access 2010中的2个单独表中连接日期字段。外部联接的作用类似于内部联接

时间:2015-06-05 11:40:05

标签: ms-access

  

块引用

我正在从Access 2010中的2个单独的表中加入日期字段。在“加入属性”中,我将包括左侧表中的所有记录,以及仅包含右表中的记录的记录。由于某种原因,它将它视为常规连接,只显示与两个表匹配的记录。示例:左表在2015年5月 - 5月1日 - 5月31日期间每天有31条记录。右表只有19条记录,其中包含5月份的日期以及我希望在匹配时看到的其他字段。当我运行查询时,它只返回19条记录,而不是我期望的31条记录。我已经确认两个表都是针对日期格式化的,甚至尝试使用“Clng”更改数据类型以确认记录匹配。我正在使用查询的“设计”视图 - 我对Sql或Vba一点都不好。我搜索过的所有网站都使用SQL来引用这个问题..

下面的SQL适用于那些可以使用它的人:

SELECT 
    [Raven Download 10 table].Region
    , [Raven Download 10 table].Market
    , [Raven Download 10 table].Location
    , [Date table].dDate
    , [Raven Download 10 table].SessEndDate
    , [Raven Download 10 table].MaxOfDwnldStat
FROM 
    [Raven Download 10 table] 
RIGHT JOIN 
    [Date table] 
ON 
    [Raven Download 10 table].SessEndDate = [Date table].dDate
WHERE 
    ((([Raven Download 10 table].Location)="hay river"));

1 个答案:

答案 0 :(得分:0)

您无法在"外部联接"上指定条件。以你的方式表。然后你基本上强迫它再次进入内连接。而是试试这个。

SELECT 
      RavenHay.Region
    , RavenHay.Market
    , RavenHay.Location
    , [Date table].dDate
    , RavenHay.SessEndDate
    , RavenHay.MaxOfDwnldStat
FROM 
    [Date table] 
LEFT JOIN
    (
    select 
        [Raven Download 10 table].Region
        , [Raven Download 10 table].Market
        , [Raven Download 10 table].Location
        , [Raven Download 10 table].SessEndDate
        , [Raven Download 10 table].MaxOfDwnldStat
    from 
        [Raven Download 10 table]  
    where
        [Raven Download 10 table].Location="hay river" 
    ) AS RavenHay
ON 
    [Date table].dDate = RavenHay.SessEndDate 

更新:

如果您不习惯使用SQL,则使用[Raven Download 10 table]及其相关查询创建一个Access Query,即受hayriver限制,然后针对该查询进行右连接。