Создать запрос на обновление с несколькими критериями?

У нас есть база данных Access 2013 для наших списков продуктов, я работал в Access около месяца. У нас есть поля для SKU, а также категории, описания и т. д. в таблице 1.

Теперь мне нужно добавить еще больше полей в Таблицу 1, включая столбец для весов и столбец для сообщений об отсутствии на складе.

Мы настроили его так, что разрешен только один экземпляр SKU, дубликатов не будет. Я думаю, именно поэтому, когда я попытался импортировать свой файл Excel с весами и сообщениями, импорт не удался, потому что все «записи были потеряны из-за ключевых нарушений». Других ошибок с моим файлом не было. Я также работаю над интерфейсом разделенной базы данных, если это имеет значение.

Итак, я импортировал файл Excel в новую таблицу (таблица 2). Я пытаюсь запустить запрос на ОБНОВЛЕНИЕ, но у меня возникают проблемы с критериями.

Например, для SKU F496, K4492-92 и P49201 мне нужно обновить их пустые поля веса и сообщения в таблице 1 со значениями в таблице 2 для весов и сообщений (все веса и сообщения уникальны). Это будет для 2000+ продуктов.

Это кажется элементарной вещью, я искал и искал, но, возможно, у меня не было нужных фраз.


person aqua_imanok    schedule 18.10.2013    source источник


Ответы (1)


Начните с создания запроса SELECT в представлении «Дизайн» конструктора запросов. Выберите две таблицы, затем щелкните правой кнопкой мыши заголовок каждой, чтобы назначить псевдонимы для имен таблиц: t1 для Table 1; и t2 для Table 2. Затем перетащите линию между полями SKU, чтобы создать между ними INNER JOIN. Добавьте поля SKU, weight и message из Table 1 в сетку дизайна. Запустите запрос (переключитесь в режим таблицы), чтобы убедиться, что результаты приемлемы. Если вы затем переключитесь на представление SQL, вы должны увидеть утверждение, подобное этому...

SELECT
    t1.SKU,
    t1.weight,
    t1.message
FROM
    [Table 1] AS t1
    INNER JOIN [Table 2] AS t2
    ON t1.SKU = t2.SKU;

Если все в порядке, вернитесь в представление «Дизайн», найдите раздел «Тип запроса» на ленте «Дизайн» и измените тип на «Обновить». В строке «Обновить до:» под полем weight введите [t2].[вес]. И введите [t2].[message] под message.

Когда вы снова переключитесь на представление SQL, вы должны увидеть такое утверждение...

UPDATE
    [Table 1] AS t1
    INNER JOIN [Table 2] AS t2
    ON t1.SKU = t2.SKU
SET
    t1.weight = [t2].[weight],
    t1.message = [t2].[message];

Если все в порядке, выполните запрос. Если обновление не работает должным образом, скопируйте текст утверждения, вставьте его в свой вопрос, включите полный текст любого сообщения об ошибке и объясните, чем результат отличается от того, что вам нужно.

person HansUp    schedule 18.10.2013
comment
Большое спасибо, все получилось именно так, как вы сказали. Я очень ценю вашу помощь в этом! - person aqua_imanok; 19.10.2013