Запрос / отношение нескольких полей к одному полю в связанной таблице / запросе - PullRequest
0 голосов
/ 01 августа 2020

Приносим извинения, если на этот ответ дан SO. Я искал и не нашел очевидного дубликата. Я новичок в Access и унаследовал старый Access MDB (формат файла 2000). [Примечание: я использую Office 365.]

Данные в 5 таблицах. Однако только 4 связаны с Отношениями. Пятая (несвязанная) таблица - это гибрид различных данных в 3-х полях: Type, Code и Description. Type имеет несколько строк с повторяющимися значениями. Каждая строка типа имеет уникальные Code и Description. Каждый уникальный Тип соответствует столбцу в Таблице_1, а Коды - это значения, найденные в этом столбце. (В таблице Table_5 3000 строк с более чем 250 уникальными типами, каждая с кодами 1-500 +.) Вот упрощенная версия Table_5:

Type   Code  Description
Atype  A     Atype_A_Description
Atype  B     Atype_B_Description
Atype  X1    Atype_X1_Description
...
Class  1     Class_1_Description
Class  2     Class_2_Description
Class  9     Class_9_Description
...
Source A     Source_A_Description
Source A1    Source_A1_Description
Source A2    Source_A2_Description
...

Чтобы усложнить ситуацию, нет точного соответствия между именами полей в Таблице_1 и записями Типа в Таблице_5. (Например, значения Atype в таблице_5 соответствуют полю с именем ACC_TYPE1 в таблице_1.)

Я работаю над методом получения описания из таблицы_5 на основе имени поля и значения из таблицы_1. . Я сделал это для 1 (жестко запрограммированного) типа. Я создал запрос для этого типа в Table_5 и связал его с Table_1 с помощью отношения.

Вот что я сделал: Table_5_Atype_Query (как SQL, дайте мне знать, если другой формат предпочтителен в SO)

SELECT Table_5.[Type], Table_5.[Code], Table_5.[Description]
FROM Table_5
WHERE (((Table_5.[Type])="Atype"));

Отношение :

Table/Query:  Related Table/Query:
Table_1       Table_5_Atype_Query
ACC_TYPE1     Code

Это отлично работает, чтобы получить поле описания, ссылающееся на код из таблицы_5, на основе значений ACC_TYPE1 в таблице_1. Поиск описаний для других пар типа / кода НЕ масштабируется. (Мне нужно 250 уникальных запросов и отношений.) Другими словами, я хотел бы создать метод для получения описания из таблицы_5 на основе любого имени столбца и значения из таблицы_1. Есть ли лучшие способы сделать это?

1 Ответ

0 голосов
/ 02 августа 2020

Запрос UNION может преобразовывать поля в нормализованную структуру данных.

Запрос UNION с 5 полями:

SELECT ID, field1 as Code, "f1" as src from table1
UNION SELECT ID, field2, "f2" from table1
UNION SELECT ID, field3, "f3" from table1
UNION SELECT ID, field4, "f4" from table1
UNION SELECT ID, field5, "f5" from table1;

Конечно, используйте ваши фактические имена полей и таблиц. Теперь используйте этот запрос в другом запросе, присоединяющемся к table5.

Существует ограничение в 50 строк SELECT. Для UNION нет конструктора запросов или мастера - необходимо использовать SQLView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...