Проблема доступа и лучшая функция для выполнения задачи sh - PullRequest
0 голосов
/ 22 апреля 2020

Новый пользователь здесь, и я прочитал много тем, но, похоже, не могу найти лучший способ выполнить sh мою задачу.

Текущая проблема: я использую функцию переключения в Access для достижения sh моей цели. Вот что у меня есть, но я получаю синтаксическую ошибку?

UPDATE all_rugs_prod
SET construction_facet =
    Switch(
        construction = Machine Woven, Machine Made,
        construction = Machine Made, Machine Made,
        construction = Printed, Printed,
        construction = Hand Hooked, Hand Hooked
        )

all_rugs_prod - это база данных, construction_facet - это поле, в котором я хочу вернуть значение, construction - это поле, в котором будет выполняться поиск.

Я очень новичок для всех это так, мне нужно столько помощи, сколько я могу получить ..... Фон: я беру, скажем, базу данных 1, затем сопоставляю / сопоставляю поля с базой данных 2. База данных 2 имеет много других полей, которые требуют заполнения данных в которые были добавлены в базу данных 2, которые были добавлены.

Я создал базу данных Append из базы данных 1 в базе данных 2 и сопоставил те поля, которые были добавлены из базы данных 1, которые соответствуют базе данных 2.

Моя самая большая проблема заключается в том, что мне нужно нормализовать / данные карты в базе данных 2. Пример: в базе данных 2 есть поле из базы данных 1, которое имеет много различных текстовых значений. Мне нужно найти это поле и вернуть заранее определенное текстовое значение на основе заранее определенного списка, в который оно поместится. Так, скажем, в базе данных 2.field7 текст «аква-синий», мне нужно нормализовать / отобразить его, чтобы вернуть его в базу данных 2.field8 «синий» и так далее, и так далее. Каков наилучший способ сделать это? Список в некоторых случаях, скажем, различных цветов очень длинный. Спасибо!

1 Ответ

0 голосов
/ 22 апреля 2020

Синтаксическая ошибка возникает из-за того, что вам необходимо заключить буквенные строки в двойные кавычки, например,

"Machine Woven"`

В противном случае каждое слово, разделенное пробелом, будет интерпретироваться как поле (в отличие от литеральная строка), которая, если она не найдена в исходном наборе данных, приведет к тому, что поля будут интерпретироваться как параметры, требующие предоставления пользователем значения; но, что более важно, это приведет к тому, что в функцию switch будет добавлено слишком много аргументов.

Однако, поскольку вы обновляете только значение записей, которые содержат значение "Machine Woven" в поле construction, Ваш запрос может быть упрощен до:

update all_rugs_prod 
set construction_facet = "Machine Made" 
where construction = "Machine Woven"

Для ситуации, когда многие возможные значения вместо "Machine Woven" сопоставляются с "Machine Made", я бы предложил создать отдельную таблицу сопоставления, например:

Mapping_Table

+---------------------+--------------+
|      map_from       |    map_to    |
+---------------------+--------------+
| Machine Woven       | Machine Made |
| Machine Built       | Machine Made |
| Machine Constructed | Machine Made |
+---------------------+--------------+

И затем используйте простой запрос на обновление с внутренними связями с приведенной выше таблицей сопоставления, чтобы выполнить неявный выбор и обновить новое значение, например:

update 
    all_rugs_prod inner join mapping_table on
    all_rugs_prod.construction = mapping_table.map_from
set 
    all_rugs_prod.construction_facet = mapping_table.map_to
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...