Синтаксическая ошибка в сложном предложении JOIN SQL-запроса через Excel VBA - PullRequest
0 голосов
/ 22 января 2019

У меня есть 4 таблицы, которые мне нужно объединить со следующими полями, которые можно связать:

  1. tblModels (TRADE_DATE, MODEL)
  2. tblModelDef (MODEL, ASSET)
  3. tblFutPx (TRADE_DATE, ASSET)
  4. tblTA (TRADE_DATE, ASSET)

Я хочу "ВЛЕВО СОЕДИНИТЬ" tblModels, т.е. я хочу отобразить все данныедля tblModels и показать данные для tblFutPx и tblTA, когда они доступны для соответствующего [TRADE_DATE].Так что ссылка [TRADE_DATE] и [ASSET] для соответствующих данных, но мне нужно использовать tblModelDef в качестве моста между tblModels и tblFutPx & tblTA.

Я продолжаю получать ошибки «Ошибка синтаксиса в операции JOIN».

Я пытался заставить это работать слишком долго, но это то, где я нахожусь.Я попытался упростить предложение FROM, чтобы убедиться, что ошибка исходит от него, и это так.

FROM ((tblModels INNER JOIN tblModelDef ON tblModels.[MODEL] = tblModelDef.[MODEL]) LEFT JOIN tblFutPx ON (tblModelDef.[ASSET] = tblFutPx.[ASSET]) AND (tblModels.[TRADE_DATE] = tblFutPx.[TRADE_DATE])) LEFT JOIN (tblTA ON (tblModels.[TRADE_DATE] = tblTA.[TRADE_DATE]) AND (tblModelDef.[ASSET] = tblTA.[ASSET]))

1 Ответ

0 голосов
/ 22 января 2019

Вероятно, потребуется несколько запросов для выполнения. Создавал таблицы и использовал Query Builder для разработки запросов. Не назначать никаких первичных ключей, просто установите ссылки, чтобы «показать все записи из tblModels ...». Доступ используется RIGHT JOIN.

Query1:

SELECT tblModelDef.Model, tblModelDef.Asset, tblModels.Trade_Date
FROM tblModelDef RIGHT JOIN tblModels ON tblModelDef.Model = tblModels.Model;

Query2:

SELECT Query1.Model, tblFutPx.Trade_Date, tblFutPx.Asset, tblTA.Trade_Date, tblTA.Asset
FROM tblFutPx RIGHT JOIN (tblTA RIGHT JOIN Query1 ON (tblTA.Asset = Query1.Asset) AND (tblTA.Trade_Date = Query1.Trade_Date)) ON (tblFutPx.Asset = Query1.Asset) AND (tblFutPx.Trade_Date = Query1.Trade_Date);

Все в одном вложено:

SELECT Query1.Model, tblFutPx.Trade_Date, tblFutPx.Asset, tblTA.Trade_Date, tblTA.Asset
FROM tblFutPx RIGHT JOIN (tblTA RIGHT JOIN 
    (SELECT tblModelDef.Model, tblModelDef.Asset, tblModels.Trade_Date
    FROM tblModelDef RIGHT JOIN tblModels ON tblModelDef.Model = tblModels.Model) AS Query1 
ON (tblTA.Asset = Query1.Asset) AND (tblTA.Trade_Date = Query1.Trade_Date)) ON (tblFutPx.Asset = Query1.Asset) AND (tblFutPx.Trade_Date = Query1.Trade_Date);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...