Запрос на обновление MS Access и внутреннее соединение со строковым параметром - PullRequest
0 голосов
/ 07 октября 2018

Пожалуйста, помогите мне решить эту проблему в MS Access.Я хочу обновить user table, используя statusid, который я получу в userstatus table.

. Этот запрос корректно работает в MySQL.Почему в MS Access нет.Внутреннее соединение с параметром строки не работает.

UPDATE tbl_users AS us
  INNER JOIN tbl_userstatus AS ust ON ust.status = "Offline"  
SET us.statusid =  ust.statusid 
WHERE us.username = "francis";

Ответы [ 2 ]

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

В MS Access вы можете попробовать:

UPDATE tbl_users AS us,   -- MS Access does not support explicit CROSS JOIN
       tbl_userstatus AS ust
    SET us.statusid =  ust.statusid 
    WHERE us.username = "francis" AND ust.status = "Offline";

В любой базе данных вы можете использовать:

UPDATE tbl_users
    SET statusid =  (SELECT ust.statusid FROM tbl_userstatus AS ust ON ust.status = "Offline")
    WHERE username = "francis";

Это не точно одно и то же.Но я предполагаю, что tbl_userstatus имеет ровно одну строку с «Offline» - в этом случае они эквивалентны.

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

Попробуйте, как показано ниже, предположим, statusid - это объединяющий столбец между двумя таблицами, и предположите, что вы хотите обновить status столбец пользовательской таблицы, используя данные tbl_userstatus столбца status

UPDATE us
SET    us.status =  ust.status 
FROM   tbl_users AS us
       INNER JOIN tbl_userstatus  AS ust  
              on us.statusid =  ust.statusid
         WHERE us.username = "francis"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...