ОБНОВЛЕНО на основе комментария ...
Первый код (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;
Я добавил ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ, как вы предложили, но это не помогло отобразить записи: `LEFT OUTER JOIN tblBM_Data ON tblFUNDS.DS_Benchmark_Symbol = tblBM_Data.MNEMONIC) LEFT OUTER JOIN tblBM_blDNMata_Data_tblBM_blDNMata_Data_tblBM_blDNMata_Data_ `
And (tblFunds_TS_Data.Date)>=#12/28/2013# - у вас не может быть критериев WHERE для таблиц на ВНЕШНЕЙ стороне объединений. Или хотя бы вам нужен OR ... IS NULL.
@Andre Спасибо! Это сработало ... Я изменил его на: WHERE (((tblFUNDS.ISIN) = [strISIN]) AND ((tblFunds_TS_Data.Date) = [tblBM_TS_Data]. [Date] And (tblFunds_TS_Data.Date)> = # 12 / 28/2013 # Или [tblBM_TS_Data]. [Date] is Null) AND ((tblFUNDS.Fund_Selection) = 0))
@Andre Пожалуйста, оставьте это как ответ, чтобы я мог принять его!


Проблема заключалась в этом критерии WHERE в таблице на ВНЕШНЕЙ стороне LEFT JOIN:
And tblFunds_TS_Data.Date >= #12/28/2013#
Чтобы отфильтровать эту таблицу, вам нужно добавить OR ... IS NULL, чтобы запрос все еще мог включать записи, в которых ВНЕШНЯЯ сторона пуста:
And (tblFunds_TS_Data.Date >= #12/28/2013# OR tblFunds_TS_Data.Date IS NULL)
Используйте
left outer joinв части, которая соединяется на основеmnemonic