Обновите несколько столбцов на основе различных условий для каждого столбца в MS Access - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь объединить две таблицы Tbl_LIN и CDETOPDE .Эти таблицы имеют общий ключ ID элемента .В процессе присоединения нам также необходимо обновить два столбца из Tbl_LIN ; Glossary_ID и DRD_ID .Следует отметить, что эти столбцы также относятся к CDETOPDE .Наша цель - установить Tbl_LIN.Glossary_ID в значение NULL, если CDETOPDE.Glossary_ID равно NULL.Аналогично для других столбцов DRD_ID .Вот попытка в Ms Access.

UPDATE tblLineage

INNER JOIN 

CDEtoPDE

ON tblLineage.Element_ID = CDEtoPDE.Element_ID

SET tblLineage.Glossary_ID = NULL

WHERE (CDEtoPDE.Glossary_ID  IS  NULL AND tblLineage.Glossary_ID IS NOT NULL)

UNION (

SET tblLineage.DRD_ID = NULL

WHERE 
(CDEtoPDE.DRD_ID  IS  NULL AND tblLineage.DRD_ID IS NOT NULL))

Несколько операторов SET не допускаются в одном запросе, поэтому мы подумали об использовании UNION, но получили синтаксическую ошибку.Помощь / совет очень ценится.

1 Ответ

0 голосов
/ 26 октября 2018

Вместо использования предложений UNION и WHERE вы можете поместить выражение Iif в предложение SET:

UPDATE tblLineage
INNER JOIN 
CDEtoPDE
ON tblLineage.Element_ID = CDEtoPDE.Element_ID
SET tblLineage.Glossary_ID = iif(CDEtoPDE.Glossary_ID  IS  NULL AND tblLineage.Glossary_ID IS NOT NULL, NULL, tblLineage.Glossary_ID),
    tblLineage.DRD_ID = Iif(CDEtoPDE.DRD_ID  IS  NULL AND tblLineage.DRD_ID IS NOT NULL, NULL, tblLineage.DRD_ID)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...