在另一个数据表中查找非条目(MS Access SQL)

时间:2017-01-05 17:18:27

标签: sql ms-access

我知道这里有几百个类似的帖子,但我已经尝试了MS Access中的所有其他方法,但仍然无法使其工作。

所以我的工作代码如下

SELECT FVR.*, V.[Week Commencing], F.Date, V.Date
FROM FVR 
INNER JOIN (F 
INNER JOIN V ON (F.[Week Commencing] = V.[Week Commencing]) AND (F.GUID = V.GUID))
              ON (FVR.GUID = V.GUID) AND (FVR.GUID = F.GUID)

我希望的效果是展示" F"的日期。 " V"表中没有条目的表。

很抱歉在桌子上被碾压,但这是为了工作。我觉得我对如何做到这一点有很好的理解。

任何帮助都会令人惊讶,因为我现在已经把头发拉过来了一段时间。

提前干杯谢谢。

编辑它以添加完整代码,因为它会更有意义。

我基本上无法生成F(预测)中与V(访问)不匹配的数据范围我试图使用周开始和来自两者的GUID来显示未访问过的预测日期列表表,FVR表只是一个表,用于保存与GUID匹配的区域数据。 @Hogan我尝试了你的方式并最终出现语法错误,我几乎到了某个地方,然后再次丢失它。我以为我对SQL有了更多的了解。

完整代码如下

    SELECT  FVR.*, [Visits].[Week Commencing], [Forecast].[Forecast Date], [Visits].Date
    FROM ForecastVisitRegion 
    INNER JOIN ([Forecast] INNER JOIN [Visits] ON ([Forecast].[Week Commencing] = [Visits].[Week Commencing])
    AND ([Forecast].GUID = [Visits].GUID)) ON (FVR.GUID = [Visits].GUID)
    AND (FVR.GUID = [External - Forecast].GUID)

再次感谢

Stephen Edwards

2 个答案:

答案 0 :(得分:0)

您需要使用左连接:

SELECT FVR.*, V.[Week Commencing], NZ(V.Date,F.Date) as virtual_date
FROM FVR 
LEFT JOIN F ON FVR.GUID = F.GUID
LEFT JOIN V ON FVR.GUID = V.GUID F.[Week Commencing] = V.[Week Commencing]

答案 1 :(得分:0)

我不确定为什么FVR进入混合但您需要left Join

Select F.*
from F
left join V on F.[Week Commencing] = V.[Week Commencing] AND F.GUID = V.GUID
where V.GUID is null

左连接确保F中的所有记录(匹配与否)都包含在结果集中。然后,V.GUID is null移除V中未找到匹配项的记录,为您留下没有匹配的F条记录。

另一种方法是在NOT EXISTS条款

中使用WHERE语句
Select F.*
from F
where not exists (select * from V where F.[Week Commencing] = V.[Week Commencing] AND F.GUID = V.GUID)