如何在Access查询中显示没有键的记录

时间:2018-10-17 06:18:19

标签: sql ms-access ms-access-2010

基于评论已更新...

第一只股票(ISIN)是主要股票,第二只股票是我们用来衡量其表现的基准(MNEMONIC)。只要存在基准,我的查询就可以工作并返回结果。但是,当不存在基准时(即因为尚未确定基准),该查询根本不会返回任何结果。在任何情况下如何获取主要库存(始终存在)的结果?

这是我当前的SQL:

PARAMETERS strISIN Text ( 255 );
SELECT 
    tblFUNDS.ISIN, tblFunds_TS_Data.Date, tblFunds_TS_Data.Price, tblBM_Data.MNEMONIC, 
    tblBM_TS_Data.Date, tblBM_TS_Data.Price, RiskFreeReturn.F6 AS RiskFreeReturn_USD, 
    tblFUNDS.Fund_Selection
FROM 
    ((((tblFUNDS LEFT OUTER JOIN tblFunds_Data ON tblFUNDS.ISIN = tblFunds_Data.ISIN) 
        LEFT OUTER JOIN tblFunds_TS_Data ON tblFunds_Data.ISIN = tblFunds_TS_Data.ISIN) 
        LEFT OUTER JOIN tblBM_Data ON tblFUNDS.DS_Benchmark_Symbol = tblBM_Data.MNEMONIC) 
        LEFT OUTER JOIN tblBM_TS_Data ON tblBM_Data.MNEMONIC = tblBM_TS_Data.MNEMONIC) 
        LEFT OUTER JOIN RiskFreeReturn ON tblFunds_TS_Data.Date = RiskFreeReturn.F1
WHERE 
    (((tblFUNDS.ISIN)=[strISIN]) 
    AND ((tblFunds_TS_Data.Date)=[tblBM_TS_Data].[Date] 
        And (tblFunds_TS_Data.Date)>=#12/28/2013#) 
    AND ((tblFUNDS.Fund_Selection)=0))
ORDER BY tblFunds_TS_Data.Date;

1 个答案:

答案 0 :(得分:1)

问题在于此“ WHERE”条件位于“左联接”外侧的桌子上:

And tblFunds_TS_Data.Date >= #12/28/2013#

要对此表进行过滤,您需要添加OR ... IS NULL,因此查询仍然可以包括OUTER侧为空的记录:

And (tblFunds_TS_Data.Date >= #12/28/2013# OR tblFunds_TS_Data.Date IS NULL)