Объединение нескольких запросов ms Access в одну существующую таблицу

#ms-access #vba

#ms-access #vba

Вопрос:

Я застрял с моим плохим знанием запроса MS Access. У меня есть 2 таблицы.

 1. Table Output and
2. Dump : this is a linked table to an excel file
  

Я использовал пользовательскую функцию объединения, найденную вhttp://allenbrowne.com/func-concat.html

У меня всего 8 разных запросов, как показано ниже:

 Query_1 : DELETE table FROM [Output];

Query_2 : INSERT INTO [Output] (SERVICE_REQUEST_NO) SELECT DISTINCT SERVICE_REQUEST_NO
FROM Dump
ORDER BY SERVICE_REQUEST_NO;

Query_3 : SELECT DISTINCT i.SERVICE_REQUEST_NO, ConcatRelated(
"EMERTEL_NO",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """") AS EMERTEL_NOss
FROM Dump AS i;

Query_4 : SELECT DISTINCT i.SERVICE_REQUEST_NO, ConcatRelated(
"LOGGED_DATE",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """") AS LOGGED_DATEss
FROM Dump AS i;

Query_5 : SELECT DISTINCT i.SERVICE_REQUEST_NO, ConcatRelated(
"PART_NO",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """") AS PART_NOss
FROM Dump AS i;

Query_6 : SELECT DISTINCT i.SERVICE_REQUEST_NO, ConcatRelated(
"PART_DESC",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """") AS PART_DESCss
FROM Dump AS i;

Query_7 : SELECT DISTINCT i.SERVICE_REQUEST_NO, ConcatRelated(
"STATUS_DESC",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """") AS STATUS_DESCss
FROM Dump AS i;

Query_8 : SELECT DISTINCT i.SERVICE_REQUEST_NO, ConcatRelated(
"STATUS_DATE",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """") AS STATUS_DATEss
FROM Dump AS i;
  

Моя проблема в том, что я хочу обновить или вставить вывод всех этих запросов в таблицу «Вывод» для соответствующего "SERVICE_REQUEST_NO" поля

Дайте мне знать, если вы хотите взглянуть на мою базу данных MS Access.

Пожалуйста, помогите мне.

Спасибо за поддержку полей вывода таблицы
введите описание изображения здесь

Ответ №1:

Сначала вы должны объединить это в один запрос. Таким образом, каждый запрос выбирает только один столбец из Dump таблицы. Если вы разделите запросы, вам придется JOIN обрабатывать каждый из них, что является проблемой и создает больше возможностей для ошибок. В качестве одного запроса это будет выглядеть:

 INSERT INTO [Output] 
(
    SERVICE_REQUEST_NO,
    EMERTEL_NOss,
    LOGGED_DATEss,
    PART_NOss,
    PART_DESCss,
    STATUS_DESCss,
    STATUS_DATEss
) 
SELECT DISTINCT
SERVICE_REQUEST_NO,
Concatrelated(
"EMERTEL_NO",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """") 
    AS EMERTEL_NOss,
Concatrelated(
"LOGGED_DATE",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """") 
    AS LOGGED_DATEss,
Concatrelated(
"PART_NO",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """") 
    AS PART_NOss,
Concatrelated(
"PART_DESC",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """") 
    AS PART_DESCss,
Concatrelated(
"STATUS_DESC",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """") 
    AS STATUS_DESCss,
Concatrelated(
"STATUS_DATE",
"Dump",
"SERVICE_REQUEST_NO = """ amp; [SERVICE_REQUEST_NO] amp; """") 
    AS STATUS_DATEss
FROM [Dump]
  

Я не совсем уверен, почему вы используете DISTINCT в каждом запросе, не видя ваших фактических данных. Для целей этого ответа я предполагаю, что вы используете его, чтобы избежать точного дублирования строк в [Output . Единственный DISTINCT в верхней части моего списка выбора позаботится об этом.