2013-11-09 4 views
0

У меня есть две таблицы в базе данных Microsoft Access 2007.Как объединить две таблицы с согласованными столбцами в один вид

Один из них имеет столбцы «имя 1 & имя 2» с 2000 документами. Другая таблица имеет более подробную информацию: она имеет два столбца с именем «code1 & code2» с 3000 записями. Каждое имя имеет код означает, что каждое имя имеет код, хранящийся во второй таблице в коде столбца 1.

Я хочу сделать одну таблицу или запрос, который показывает мне имя 1 & имени 2 с их специфической code1 & кода 2 со второй таблицы.

И он должен иметь только 2000 записей

пример:

Tabel 1:

name-1  name-2 
----------------------------- 
Abacavir Digoxin 
Amprenavir Aspirin 

Tabel 2:

code-1 drug1  
---------------- 
xy1  Abacavir 
xy2  Digoxin  
yxr1  Amprenavir 
uyv2  Aspirin 

Пример вывода:

name-1  code-1 name-2 code-2 
----------------------------------------- 
Abacavir xy1  Digoxin xy2 
+0

Это поможет, если вы [отредактировали] (http://stackoverflow.com/posts/19884085/edit) свой вопрос, чтобы показать нам некоторые репрезентативные образцы данных: [Таблица1], [Таблица2] и желаемый результат. В частности, вы могли бы проиллюстрировать, почему в [Таблица 2] для данной записи в [Таблица1] может быть несколько совпадений, и какое значение из [Таблица 2] вы хотите получить и почему. –

+0

Я отредактировал его, пожалуйста, просмотрите его снова, если вы можете мне помочь –

+0

Является ли проблема, что у вас одно и то же имя1 значение дважды в таблице2, и вы хотите, чтобы оба значения code1 представляли собой единое поле? Ваши типовые данные по-прежнему в основном неразборчивы, я не уверен, с чего начать, кроме как делать произвольные догадки о том, что вы просите. – cgraus

ответ

0

Эта структура таблицы плохо разработана, но я предполагаю, что вы застряли в ней. Вы должны создать запрос, который дважды присоединяется к таблице2 ... один раз для каждого из отношений, на которые вы связываете. В моем тесте я создал db доступа и назвал мои таблицы простой Table1 и Table2, поэтому вам может потребоваться немного изменить этот запрос, чтобы он соответствовал вашим именам таблиц и столбцов.

SELECT Table1.name1, Table2a.code1, Table1.name2, Table2b.code1 
FROM (Table1 LEFT JOIN Table2 AS Table2b ON Table1.name2 = Table2b.drug1) LEFT JOIN Table2 AS Table2a ON Table1.name1 = Table2a.drug1; 
+0

, он не работает: '( это дает мне около 4000 записей С ПЕРВЫМ РЯДОМ REPEATED !! –

+0

Все, что я могу сказать, это то, что с учетом данных, которые вы предоставили (что wasn' t). Возможно, у вас есть повторяющиеся записи в таблице2, которые вызывают дубликаты? Если это так, добавление DISTINCT после ключевого слова SELECT может позаботиться об этом, но без лучшего окна в ваши данные я не могу больше догадываться об этом. – dazedandconfused

0

У вас есть 2K в первом и 3K во втором - это ключ. Попробуйте добавить ключ «Distinct» в ваш оператор SQL: SELECT DISTINCT Table1.name1, Table2a.code1, Table1.name2, Table2b.code1 FROM (Таблица 1 Таблица LEFT JOIN Table2 AS Table2b ON Table1.name2 = Table2b.drug1) LEFT JOIN Таблица2 AS Table2a ON Table1.name1 = Table2a.drug1;

В противном случае я думаю, что Фрэнк прибил его.

Смежные вопросы