2016-07-23 2 views
1

У меня есть две таблицы, которые имеют разные данные, которые мне нужно объединить. Они имеют сходства, такие как: номер заказа, имя, тип или продукт. Но у них есть отдельные данные, а также: дата заказа и гравюры.Слияние двух таблиц в Access?

Я бы сделал два отдельных запроса Append в Access в объединенную таблицу? Или можно добавить запросы? Или просто сохранить данные отдельно?

Я новичок в Access и пытаюсь найти лучший способ подойти к этому.

ответ

0

Слияние двух таблиц в один полностью поражает цель использования базы данных, и вам лучше использовать Excel в этой точке. Вы хотите разбить данные как можно больше по логическим строкам, чтобы вы могли найти, скажем ... все заказы, которые когда-либо делал г-н Х для конкретного продукта. И в этом случае вам захочется иметь отдельные таблицы для клиентов, заказы, гравюры и тому подобное.

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

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

Тем не менее, я настоятельно предлагает вам использовать учебники Microsoft и загрузить базу данных NorthWind, чтобы вы могли понять, как выглядит правильно структурированная база данных. Кривая обучения новичка для доступа очень крутая и наличие хорошо построенных баз данных примеров является почти необходимым.

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

+0

Мне нравится этот ответ, меня беспокоит только то, что я работаю с текстовыми файлами, которые пользователь импортирует вручную. Конечный пользователь не будет взаимодействовать с базой данных, кроме импорта, запуска отчетов и повторения. Я считаю, что доступ позволит им легко управлять этим процессом, единственная проблема заключается в том, что нам нужно всего лишь ссылаться на номер заказа, а не на разделение контактов и других разделов базы данных, а затем получать доступ к нему через запрос. В этом сценарии нет живых данных, я создаю основу для данных, для пользователей, которые не грамотны ни в одной из этих программ. – Fortune

0

Поскольку у вас есть похожие поля в любой из таблиц, возьмите поле номера заказа из обеих таблиц, используя запрос объединения. Что-то вроде:

SELECT tbl_Delivery_Details.OrderNo 
FROM tbl_Delivery_Details 
GROUP BY tbl_Delivery_Details.OrderNo 
UNION 
SELECT tbl_Delivery_Header.[Order number] 
FROM tbl_Delivery_Header 
GROUP BY tbl_Delivery_Header.[Order number]; 

Это бы порядковые номера из таблицы деталей доставки и из таблицы заголовков доставки и объединить их в один список только один экземпляр каждого номера заказа. Сохраните запрос.

Затем вы можете использовать этот запрос в новом запросе. Вставьте 2 таблицы в этот запрос и вставьте поля из любой требуемой таблицы.

Поскольку пользователи добавляют записи в таблицы, они будут добавлены в запрос объединения, когда он будет запущен.

PB

0

Это зависит от того, что вы хотите сделать. Предположим, что у вас есть таблицы A (с 50 записями) и B (с 75) записями, а обе таблицы имеют аналогичный столбец OrderID.

добавляющим Ряды: Если вы хотите создать таблицу с 125 Всего записей путем объединения записей (строк) из A и записей (строк) из B, выполните следующие два запроса:

запроса 1 :

SELECT A.ORDER_NUMBER, A.TEXT_FIELD1 as DATA INTO C 
FROM A; 

Запрос 2:

INSERT INTO C (ORDER_NUMBER, DATA) 
SELECT B.ORDER_NUMBER, B.TEXT_FIELD2 
FROM B; 

добавляющих Столбцы: Если вы хотите создать таблицу с 75 Всего записями, где вы столбцами из прилагаемых A столбцов в B, а затем запустить следующий запрос:

SELECT B.ORDER_NUMBER, A.TEXT_FIELD1, B.TEXT_FIELD2 INTO C 
FROM A RIGHT JOIN B ON A.ORDER_NUMBER = B.ORDER_NUMBER; 

... в Подобным же образом, вы можете добавить столбцы в B столбцам в A в новой таблице C в общей сложности 50 записей, выполнив следующий запрос:

SELECT A.ORDER_NUMBER, A.TEXT_FIELD1, B.TEXT_FIELD2 INTO C 
FROM A LEFT JOIN B ON A.ORDER_NUMBER = B.ORDER_NUMBER; 
Смежные вопросы