2016-08-25 3 views
0

У меня есть таблица1, которая связана со многими другими таблицами с использованием PK/FK. Теперь я хочу создать экспорт всех записей из Таблицы 1, и для каждой записи таблицы 1 отобразятся все значения из других таблиц в Excel И НЕ ТОЛЬКО A FK в полях, которые являются FK. Проблема здесь - у меня есть записи в таблице 1, в которых все поля заполнены (в том числе FK), а некоторые нет. Таким образом, те поля FK, которые не связаны с другими таблицами, пусты, и Access показывает в Query только связанные записи.Экспорт в Excel для 1 таблицы из всех связанных таблиц

Любая идея о том, что я могу сделать, чтобы сделать доступ, показать все данные в одной строке таблицы Excel?

EDIT:

Мои таблицы (таблица Employee связан 4 раза таблицы APPS - FK_fields, но доступ показывает только 1 отношения)

enter image description here

Мой вывод должен иметь все эти поля из таблицы APPS в 1 строке, НО СО ВСЕМИ связанными полями таблицы вместо значений FK_fields. Пример для 1 строки (желаемый порядок вывода, за которым следуют таблицы APPS-ПОСТАВЩИКИ-СОТРУДНИКИ-ВЕРСИЯ-ОБОРУДОВАНИЕ-APPS_HARDWARE):

1234 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Long | Sally Sugar | 25.08.2016 | Версия 1 | 1-я версия | 25.08.2016 (версия) | ПК | настольный компьютер | 25.08.2016 (дата аппаратуры) | Действительна для использования | 25.08.2016 (Дата записи APPS-HARDWARE)

+0

Вы создаете запрос с помощью конструктора запросов или писать SQL? –

+0

Я делаю оба, в построителе запросов. Но пока мне удалось отобразить только записи из таблицы 1, которые сопоставляются со всеми связанными таблицами. – LuckyLuke82

+1

Хорошо, если вы щелкните правой кнопкой мыши по линии отношений между таблицей 1 и таблицей 2 и выберите «Присоединить свойства», вы можете выбрать, чтобы все записи из таблицы 1 в вашем запросе, даже если в таблице нет соответствующих записей в таблице 1 –

ответ

2

Вам необходимо изучить и использовать таблицы соединений, слева и/или справа. Левое соединение говорит, что мне показывают все данные из таблицы, написанной слева, даже если из таблицы справа нет соответствующей записи (ов). Простой пример:

SELECT table1.column1, table2.column2... 
FROM table1 
LEFT JOIN table2 
ON table1.common_field = table2.common_field; 

Недостающие данные будут заполнены NULL.

SQL - LEFT JOINS


При использовании доступа Query Design View вы можете воспользоваться этим, чтобы помочь создать оператор SQL. Я бы поставил основную таблицу влево, а объединенные таблицы развёрнулись вправо. Дважды щелкните строки соединения, чтобы изменить их влево или вправо.

Вы будете в конечном итоге с чем-то вроде этого, хотя это требует некоторого форматирования для отображения аккуратно:

SELECT 
    tblStaff.FirstName, tblOffices.OfficeName, tblDepts.Department, 
    tblHolidays.FirstDate 
FROM (tblOffices 
RIGHT JOIN (tblDepts 
RIGHT JOIN tblStaff 
    ON tblDepts.DeptID = tblStaff.Department) 
    ON tblOffices.OfficeID = tblStaff.OfficeID) 
LEFT JOIN tblHolidays 
    ON tblStaff.StaffID = tblHolidays.StaffID; 

enter image description here

+0

Вот ссылка на документацию, [различия между объединениями] (http://stackoverflow.com/documentation/sql/261/join/14930/differences-between-sql-joins#t=201608251203567842533). –

+0

спасибо Энди, я кое-что знаю о левых соединениях, но как сделать левое соединение несколькими таблицами для 1 таблицы? – LuckyLuke82

+0

Я добавил к своему ответу. –

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