При доступе запрос показывает результаты только в том случае, если в КАЖДОМ поле есть записи - PullRequest
0 голосов
/ 28 декабря 2018

Я создаю базу данных, которая отслеживает работодателей и данные, связанные с работодателем.

У меня настроен запрос параметров, который извлекает записи, относящиеся к выбранному работодателю.

В настоящее время, если одиниз полей не имеет записей, но некоторые из полей делают, когда я запускаю запрос, он появляется пустым.Я хотел бы показать все имеющиеся записи, связанные с работодателем.

SELECT 
    [Employer Contact].Employer,
    [Employer Type/Intern Functions].Type,  
    [Employer Type/Intern Functions].[Intern Functions/Responsibilities
    [Internship Notes].Date,
    [Internship Notes].Specialist,
    [Internship Notes].Notes
FROM 
    (
    [Employer Contact] 
    INNER JOIN [Internship Notes] 
        ON [Employer Contact].[Employer] = [Internship Notes].[Employer]
    ) 
    INNER JOIN [Employer Type/Intern Functions]
        ON [Employer Contact].[Employer] = [Employer Type/Intern Functions].[Employer]
WHERE 
(
    (
        ([Employer Contact].Employer)=[Forms]![Employer Record Search]![cboChooseEmp])
    ) 
OR (
    (([Forms]![Employer Record Search]![cboChooseEmp]) Is Null)
);

Это проблема в отношениях?Критерии?Как мне структурировать мой запрос так, чтобы он показывал записи, которые имеют значение, когда некоторые из записей равны нулю?

1 Ответ

0 голосов
/ 28 декабря 2018

Так как таблица Employer Contact кажется вашей родительской таблицей, из которой выбираются записи, то вы должны LEFT JOIN эту таблицу передать двум дочерним таблицам Employer Type/Intern Functions и Internship Notes, чтобы записи из родительской таблицы всегда отображаются , независимо от того, содержат ли дочерние таблицы связанные записи.

Например:

SELECT 
    [Employer Contact].Employer, 
    [Employer Type/Intern Functions].Type,  
    [Employer Type/Intern Functions].[Intern Functions/Responsibilities], 
    [Internship Notes].Date, 
    [Internship Notes].Specialist, 
    [Internship Notes].Notes
FROM 
    (
        [Employer Contact] LEFT JOIN [Internship Notes] ON 
        [Employer Contact].[Employer] = [Internship Notes].[Employer]
    ) 
    LEFT JOIN [Employer Type/Intern Functions] ON 
    [Employer Contact].[Employer] = [Employer Type/Intern Functions].[Employer]
WHERE 
    [Employer Contact].Employer = [Forms]![Employer Record Search]![cboChooseEmp] OR 
    [Forms]![Employer Record Search]![cboChooseEmp] IS NULL;

Таким образом, запросне вернет никаких записей, только если запись не найдена в таблице Employer Contact.

Чтобы узнать больше о различиях между различными типами соединений, см. этот вопрос .

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