Получение представлений в Access 2010

Мой код SQL:

    SELECT EmpLastName +', '+ EmpFirstName AS ProgramSupervisorName, TeamNo
    FROM Employee, Salary, ProgramSupervisor
    WHERE Employee.EmpNo = Salary.EmpNo
    AND Salary.EmpNo = ProgramSupervisor.EmpNo
    ORDER BY TeamNo

Я понимаю, что Access не поддерживает создание представлений. Проблема, с которой я сталкиваюсь, заключается в том, что я хочу сгруппировать сотрудников по имени ProgramSupervisor, но руководители программ и сотрудники являются частью таблицы сотрудников. Различные типы сотрудников различаются по их PosNo, и сотрудники относятся к ProgramSupervisors через ряд таблиц (Hourly -> ISL ‹--- ProgramSupervisor). При этом я не могу ссылаться на ProgramSupervisorName и EmpName как на переименованное поле только в одном операторе SELECT, потому что они взяты из одной таблицы, но отличаются своим positionNo. Я надеялся, что смогу создать запрос или «представление», как в приведенном выше коде, который позаботится о том, чтобы извлечь имя ProgramSupervisor из таблицы сотрудников, а затем использовать это представление в другом запросе. В другом запросе я мог бы затем использовать код: «EmpLastName + ',' + EmpFirstName AS EmpName». Страницы, которые я искал в Интернете, слишком расплывчаты для моего ограниченного понимания, поэтому, пожалуйста, объясните мне просто. Я также постараюсь прояснить любую путаницу. Я включу свой ERD, чтобы вы могли видеть, откуда я:

введите описание изображения здесь

РЕДАКТИРОВАТЬ: запрос до сих пор

   SELECT EmpLastName +', '+ EmpFirstName AS EmpName, ProgramSupervisorName, 
   ProgSupName.TeamNo          
   FROM Employee, ISL, Hourly, Salary, ProgramSupervisor, ProgSupName
   WHERE Employee.EmpNo = Hourly.EmpNo
   AND Hourly.ISLNo = ISL.ISLNo
   AND Employee.EmpNo = Salary.EmpNo
   AND Salary.EmpNo = ProgramSupervisor.EmpNo
   AND ProgramSupervisor.EmpNo = ISL.ProgramSupervisor_EmpNo
   ORDER BY ProgSupName.TeamNo

Нужно ли мне связывать все эти таблицы, если я уже сделал их в запросе ProgSupName?


person Community    schedule 16.11.2013    source источник
comment
У Access есть представления, он называет их запросами   -  person Laurence    schedule 17.11.2013
comment
@FabianBarney Есть идеи?   -  person    schedule 17.11.2013
comment
Верно, но как получить запрос в другом запросе?   -  person    schedule 17.11.2013
comment
просто используйте имя запроса, как таблицу. Точно так же работают представления.   -  person Laurence    schedule 17.11.2013
comment
Большой. Не могли бы вы привести пример, чтобы я не испортил синтаксис?   -  person    schedule 17.11.2013
comment
Этого достаточно? Единственными таблицами, которые я буду использовать для такого запроса, будут Employee, Salary, ProgramSupervisor, ISL и Hourly. Все они связаны друг с другом в базе данных точным образом и имеют одинаковые точные имена полей.   -  person    schedule 17.11.2013
comment
@BenignBaboon. Я прочитал ваш вопрос пару раз и не понял, что вы хотите от этой таблицы. Можете ли вы пояснить это немного подробнее? Вы просто хотите знать, как использовать подзапрос в качестве представления?   -  person Filipe Silva    schedule 17.11.2013
comment
Как насчет того, чтобы сначала попробовать использовать эту функцию и задать дополнительные вопросы, если вы обнаружите проблемы?   -  person Laurence    schedule 17.11.2013
comment
Я прошу прощения. По сути, я хочу использовать запрос внутри другого запроса, но не знаю, как это сделать. Запрос, который у меня есть в верхней части моего сообщения, называется «Имя руководителя программы». Я хочу использовать поле ProgramSupervisorName из запроса «Имя супервизора программы» (я знаю, лучшего именования нет) в другом запросе. Помогите немного?   -  person    schedule 17.11.2013
comment
@Laurence Я пробую это прямо сейчас. Все еще пытаюсь понять, как ссылаться на некоторые таблицы. Дам вам знать, спасибо.   -  person    schedule 17.11.2013
comment
Я просто попытался сослаться на запрос внутри другого, и это сработало! Единственная проблема в том, что никаких результатов не было, потому что моя логика неверна. Я отправлю то, что у меня есть по запросу. Сотрудники с почасовой оплатой относятся к ISL, а ISL возглавляет ProgramSupervisor (ProgramSupervisor_EmpNo). Я хочу перечислить всех почасовых сотрудников в соответствии с ProgramSupervisor, который является главой ISL, к которой они принадлежат ... и отображать только имя почасового сотрудника, имя Program Supervisor и номер команды (teamNo не имеет значения).   -  person    schedule 17.11.2013


Ответы (2)


Я понимаю, что Access не поддерживает создание представлений.

Для записи Access поддерживает создание сохраненных запросов, которые являются просто «представлениями» под другим именем. (Фактически, OLEDB-вариант Access SQL DDL действительно поддерживает CREATE VIEW как способ создания сохраненного запроса.)

person Gord Thompson    schedule 18.11.2013

Ключ к ответу на этот вопрос состоит из двух частей:

Первый - это использование сохраненного запроса Access, такого как представление. На это был дан ответ здесь.

Второй - это ссылка на одну и ту же таблицу дважды в запросе с использованием разных псевдонимов столбцов или таблиц. На этот вопрос был дан правильный ответ на другой вопрос, заданный здесь: Отображение одних и тех же полей с разными именами из одной и той же таблицы -Access 2010

Объедините эти два ответа, и вы получите решение.

person Walter Mitty    schedule 21.11.2013