Запрос в access в sql: Русско-таджикский словарь

Как установить связь с базой данных MS ACCESS и работать с внешними таблицами

  • Главная
  • Вопросы и ответы

Обсудить в форуме Комментариев — 0

Этот раздел посвящен совместному использованию взаимодействию ГИС ArcView
3.2a
и СУБД MS ACCESS 2000. Приведенные примеры взяты из разрабатываемого
сейчас инициативного проекта «Флора Таймыра» (Поспелова Е.Б.,
Поспелов И.Н. — Таймырский заповедник, Матвеева Н.В., Заноха Л.Л.- БИН
РАН)

А. Установка связи с нужной таблицей.

Предположим, что у вас имеется база данных, в которой имеется информация,
относящаяся к объектам, изображенным на карте. Вы хотите построить одну
или несколько тематических карт, отображающих эту информацию, не вводя
соответствующие данные в атрибутивную таблицу темы. Обязательное условие
– таблица в базе данных и атрибутивная таблица темы должны иметь поле,
содержащее одни и те же данные. В приводимом ниже примере это данные по
более чем 80 точкам Таймырского АО, где проводились ботанические исследования
и имеются списки сосудистых растений. Атрибутивная таблица темы содержит
условные символьные коды участков. В таблице базы данных для каждого участка
приводятся различные примеры, такие, как число видов растений, степень
изученности участка и т.д.

По опыту, лучше заранее непосредственно в ACCESS создать запрос, содержащий
все поля, значения которых нужно отобразить на карте, так как процесс
создания запроса в ACCESS весьма прост, а для SQL-связи запрос и таблица
равнозначны. В моем случае создан запрос LFMap, содержащий поля кода участка,
принадлежности его к определенной растительно-ландшафтной зоне, числа
видов сосудистых растений и класса изученности флоры участка. Так как
тематика данного ресурса не включает вопросы по работе с ACCESS, то по
вопросам создания запросов обращайтесь к соответствующей документации

Для создания связи с базой данных необходимо, чтобы активным было окно
Проекта ArcView и выбрать в меню Project – SQL connect…

Появится окно, где вверху в поле Connection необходимо выбрать База данных MS ACCESS, нажать кнопку Connect, после чего будет предложено
выбрать конкретную базу данных.

*Примечание – для удобства работы лучше,
чтобы база данных была в том же каталоге, что и проект, можно также создать
связанную с основной отдельную базу данных в этом каталоге, так как при
последующих открытиях проекта будет предлагаться выбрать связанную с проектом
базу данных, по умолчанию будет предложен каталог, где находится проект.

После установления связи в левом окошке “Tables” диалога SQL
Connect
появятся все таблицы и запросы базы данных.

Ваши действия (алгоритм 1):

1. Дважды щелкнуть по нужному объекту базы данных. После
этого все поля таблицы или запроса появятся в окошке “Columns”,
а имя самой таблицы – в предложении “from”.

2. Дважды щелкнуть по каждому из полей, которые нужно включить в SQL-запрос
в окошке “Columns”, они появятся в предложении “Select”;
можно также щелкнуть на строчке <All Collumns>, тогда в связанной
таблице будут выведены все поля исходной таблицы. 3

Ввести вразумительное имя в поле Output table.

4. Об использовании предложения Where – см. ниже.

5. Нажать Query. Связанная таблица появится отдельным
окном. 

*Примечание: Если у вас в данный момент
запущен ACCESS, и связываемый запрос или таблица открыт в ACCESS в режиме
конструктора, то вы получите сообщение об ошибке.  

6. Закрыть диалог SQL-connect (или провести ту же операцию с другой
таблицей).

7. Путем использования меню Window и перетаскивания
окон сделать так, чтобы на мониторе были одновременно видны атрибутивная
таблица темы, к которой надо привязать данные из связанной таблицы, и
сама связанная таблица. Делать атрибутивную таблицу редактируемой необязательно,
связанная таблица редактируемой по определению быть не может. Если атрибутивная
таблица темы не обнаруживается, значит, после загрузки в проект темы к
ней не разу не обращались. Тогда в окне View нужно сделать нужную тему
активной и нажать кнопку Open theme table (где нарисована таблица).
Появится таблица с именем “Attributes of <название темы>” – это и есть атрибутивная таблица. Поочередно выделить общие поля обеих
таблиц – в приводимом примере – поле “Key” атрибутивной таблицы и поле “Ключевые участки: код” связанной.

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

ВНИМАНИЕ! Если
активным будет окно связанной таблицы, то результат получится обратный
ожидаемому – поля атрибутивной таблицы появятся в внешней связанной, что,
как я полагаю, вам не надо.

9. Перейти в окно вида и при помощи двойного щелчка по теме строить легенду
по желаемому полю. (я построил легенду типа Graduated Symbol по
полю Count — Ключевые участки код – число видов сосудистых растений).

Б. Более сложный случай – несколько одновременно загруженных
в Вид тем, основанных на одной связанной таблице.

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

Предлагаю следующий алгоритм (алгоритм 2).

  1. Добавить исходную тему в вид еще раз.
  2. Вызвать свойства темы (Theme-Properites) и переименовать ее
    в поле Theme Name, заменив «что-то.shp» на имя, отражающее
    суть темы. В окне Вида тема приобретет другое имя.
  3. Нажатием на кнопку Open theme table, тем самым активизировать
    атрибутивную таблицу темы (обратите внимание – таблица не изменилась,
    изменилось только имя таблицы, а атрибутивные данные остались теми же,
    что и у загруженной темы).
  4. Активизировать связанную таблицу и выполнить шаги 7-9 из выше описанных .
  5. При необходимости – повторить операцию с той же темой еще под одним
    именем.

В. Еще более сложный случай – связь с таблицей, где одной записи атрибутивной
таблицы темы соответствуют много записей связанной таблицы – использование
предложения Where SQL.

В данном разделе речь идет о связывании атрибутивной таблицы темы с таблицей
базы данных, содержащей множественные данные, относящиеся к определенному
географическому объекту. В приводимом примере имеется выше описанная тема,
показывающая расположение участков с обследованными флорами сосудистых
растений, атрибутивная таблица которой содержит только условные коды ключевых
участков; и таблица в базе данных ACCESS, имеющая поля код вида растений
– код ключевого участка – балльная характеристика распространения вида
на данном участке. Необходимо для определенного вида построить точечную
карту распространения. Для этого нужно выполнить следующие действия.

  1. Выполнить шаги 1-3 из приведенного в начале алгоритма
    1 создания SQL-связи.
  2. Поместить курсор в поле Where, дважды щелкнуть в окошке Columns по тому полю, по которому нужно провести выборку (в нашем случае поле SpeciesIndex, представляющее из себя числовой код вида растений).
    В окошке Where появится `Q1`.`SpeciesIndex`, далее
    ввести = нужный индекс 

Пример выражения:

`Q1`. `SpeciesIndex`=420

В русифицированном ArcView синтаксис выражения
почему-то меняется, и его нужно ввести вручную. Оно должно выглядеть так:

([Q1.SpeciesIndex])=(420)

Примечание. К сожалению, отбор можно
проводить только по числовым полям внешней таблицы. Причины этого мне
не вполне ясны, в справочной системе имеется намек, что драйвер ODBS,
поставляемый с MS ACCESS, не полностью поддерживает связь с приложениями
«made by не-Microsoft», хотя в руководстве пользователя ArcView приводится пример отбора именно по символьному полю (правда, для MS
ACCESS 97
). Если есть необходимость проводить отбор по символьному
полю, то можно создать запрос с нужной выборкой непосредственно в ACCESS
и связывать данные с ним.

  1. Выполнить шаги 5-6 из описанного выше алгоритма
    1.
  2. Добавить проект связываемую тему, переименовать ее, активизировать
    атрибутивную таблицу, соединить ее со связанной внешней (алгоритм
    2).
  3. Создать легенду темы, исключающую вывод значений, имеющих пустые
    поля для внешней таблицы.

В приведенном примере легенда построена по полю «Активность», отражающему
распространение вида в данной точке, и несколько ее модифицировал. Серыми
точками показана исходная тема, показывающая расположение всех участков
с обследованными флорами сосудистых растений.

Обсудить в форуме Комментариев — 0

Последнее обновление: September 09 2021

Дата создания: 01.02.2004

Автор(ы): Игорь Поспелов (taimyr)

Наверх

Как запустить SQL-запрос в Access? Шаг за шагом

Приложения

0 1.060 3 минут на чтение

Запрос SQL в Access может быть довольно простым, процесс может быть выполнен за считанные минуты и с помощью простых шагов. Помните, что это Существует три метода запроса: объединение, передача и определение данных. , как хотите, вы можете сделать это с помощью того же учебника.

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

Что делать, чтобы выполнить SQL-запрос в Access?

Необходимо, чтобы вы предварительно установили Microsoft Access на свой компьютер, иначе вам придется делать это через Магазин Microsoft . Чтобы начать процесс консультации, нажмите кнопку «Пуск» и введите » доступ «. Программа появится, и вам нужно дважды щелкнуть, чтобы запустить ее.

После запуска Microsoft Access откройте базу данных, в которой вы хотите выполнить SQL-запрос, у вас должна быть возможность редактировать ее. Откройте базу данных, нажмите «Все объекты доступа» , показывающий список объектов, доступных в базе данных.

Затем вам нужно выбрать » запросы »Чтобы увидеть список запросы существующий. Теперь вам нужно будет выбрать запрос, который вы хотите выполнить. Вы можете отображать данные в виде » вид дизайна « или «Просмотр SQL» так что вы можете увидеть код или окончательный вид программирования.

Любые изменения, которые вам нужно внести, можно сделать в одном из двух доступных представлений, но не забудьте сохранить их перед редактированием представлений. Теперь, чтобы выполнить ваши запросы, вы должны выбрать на панели тот, который вы хотите сделать, и в каком виде вы хотите это сделать, нажмите » выполнять «, Представленный» ! » Красный.

 

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

Зачем нужна консультация?

SQL-запросы необходимы для проверки баз данных, особенно для подтверждения их актуальности или отсутствия ошибок. Таким образом можно избежать ручного поиска, который может занять много времени. SQL — это система, предлагающая широкий спектр функций.

Управляя алгеброй, этим считающимся языком программирования, вы можете за несколько секунд дать результаты по запросам, которые вы программируете и выполняете несколькими щелчками мыши. Кроме того, основные запросы, выполняемые через Microsoft Access, могут позволить вам изменять, удалять или добавлять данные в базу данных, не усложняя задачу. Все в этой системе может работать отлично, кроме того, позволяет указать каждую деталь, чтобы сделать поиск намного быстрее и эффективнее.

Как можно определить SQL-запрос в Access?

Запрос на доступ можно рассматривать как своего рода поиск мусора. C а указанная деталь будет дорожкой и сокровище приблизится.

При использовании с SQL можно найти данные любого типа: уравнения, имена, номера телефонов, электронные письма и все, что есть в базе данных. Это программное обеспечение Microsoft может быть отличным союзником для поиска, редактирования или восстановления баз данных, созданных с помощью любой системы программирования.

 

Выделив наиболее важные данные и объяснив важность выполнения SQL-запроса в Access, можно сказать, что все сказано. В качестве последней рекомендации имейте в виду, что подавляющее большинство данных, сгенерированных запросом Access, будет в таблице, которая не будет исполняемой.

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

Подобные предметы

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

Предоставлено Молли Пелл, старшим системным аналитиком

При запросе данных из нескольких таблиц в Microsoft Access или SQL Server мы обычно используем внутренние соединения для связывания
записи со значениями, существующими в обеих таблицах. Но что, если нам нужно найти записи, которые существуют в одной таблице, но не существуют в другой?

Оказывается, это можно сделать без какого-либо программирования, так как это часть синтаксиса запроса SQL.
Просто используйте внешнее соединение для создания результатов «Не в». Используйте ЛЕВЫЙ
JOIN или синтаксис RIGHT JOIN в зависимости от того, какая таблица упоминается в запросе первой:

  • LEFT JOIN возвращает все записи из первой таблицы, даже если во второй таблице нет соответствующих записей.
  • RIGHT JOIN возвращает все записи из второй таблицы, даже если в первой таблице нет соответствующих записей.

Эти объединения также можно использовать для извлечения только тех значений записей, которые существуют в одной таблице, но не для другой.

Существует несколько сценариев, в которых следует использовать внешние соединения:

  • Отображение всех записей из одной таблицы с полями из второй таблицы, если существуют связанные записи
  • Поиск записей в одной таблице, которые не существуют в другой таблице (запрос Not-In)
  • Поиск записей, существующих в одной таблице, но не в запросе (подмножество другой таблицы)
  • Устранение неполадок с отсутствующими данными (бесхозные строки)
  • Поиск различий между двумя таблицами

В следующих примерах для демонстрации этих сценариев используются таблицы Customers и Orders из примера базы данных Northwind 2007. accdb.


Предположим, нам нужен список всех клиентов, и если у них есть Заказы, мы хотим
чтобы показать даты заказа. В этом сценарии мы хотим видеть клиентов с заказами И клиентов без заказов.
заказы. Для этого мы можем использовать левое внешнее соединение.


Разработка запроса

Выполните следующие действия, чтобы разработать запрос в интерактивном режиме (или вместо этого вставьте запрос SQL):

  1. В окне Designer добавьте таблицы Customers и Orders. Линия соединения
    автоматически добавляется для присоединения [Customers].[ID] к [Orders].[Customer ID].
  2. Дважды щелкните строку, чтобы открыть свойства соединения

    Обратите внимание, что это показывает имя левой таблицы и правой таблицы и позволяет вам выбрать
    ваш вариант присоединения. В этом случае нам нужен вариант № 2: включить ВСЕ записи от клиентов и
    только те записи из заказов, в которых соединяемые поля равны.

  3. Нажмите OK, чтобы вернуться в окно конструктора, и добавьте поля [Клиенты]. [Компания] и [Заказы].[Дата заказа]

Окно конструктора должно выглядеть следующим образом:


Запрос SQL

Оператор SQL для запроса выглядит следующим образом:

ВЫБЕРИТЕ Клиенты.Компания,
Заказы.[Дата заказа] 
ОТ клиентов LEFT JOIN Orders ON Customers.ID = Orders.[ID клиента]

Результаты запроса

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

Если бы мы использовали внутреннее соединение, то компания B была бы исключена из результатов, поскольку в таблице Orders нет соответствующей записи.

Теперь предположим, что мы ТОЛЬКО хотим найти клиентов, которые не разместили
любые заказы. Так же, как и в первом случае, мы будем
для этого используйте левое внешнее соединение. На этот раз, однако, хорошо добавить
критерии для исключения строк с заказами.


Разработка запроса

В окне конструктора добавьте таблицы «Клиенты» и «Заказы» и установите
тип соединения должен быть левым внешним соединением (как описано в шагах 1 и 2).
выше).

В окне конструктора добавьте следующие поля:

[Клиенты].[Компания] Правда равно нулю
[Заказы].[Идентификатор заказа] Ложь  

Окно дизайнера должно выглядеть так:


Запрос SQL

Оператор SQL для запроса выглядит следующим образом:

ВЫБЕРИТЕ Customers.CompanyFROM Customers
LEFT JOIN Orders ON Customers.ID = Orders.[ID клиента]
ГДЕ (((Заказы.[ID заказа]) равно нулю))
 

Результаты запроса

Запустите запрос, и вы увидите только те компании, у которых нет связанных заказов:

Теперь предположим, что мы хотим найти клиентов, которые не размещали заказы в прошлом году. Шаги аналогичны
поиск записей, которые существуют в одной таблице, но не существуют в другой, за исключением того, что вместо объединения
Таблица Customers к таблице Orders, мы присоединяем ее к сохраненному запросу, который возвращает Orders за последний год.

Сначала сохраните следующий запрос как «qryOrdersLastYear»:

SELECT * FROM Orders WHERE ((([Дата заказа])>=DateAdd('yyyy',-1,Date())))
 

И выполните описанные выше шаги, только используя qryOrdersLastYear вместо Orders. Оператор SQL для запроса выглядит следующим образом:

ВЫБЕРИТЕ Клиенты.Компания
ОТ клиентов
LEFT JOIN qryOrdersLastYear ON Customers.ID = qryOrdersLastYear.[идентификатор клиента]
ГДЕ (((qryOrdersLastYear.[Идентификатор заказа]) равно нулю))
 

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


Разработка запроса

Выполните следующие шаги, чтобы разработать запрос в интерактивном режиме (или, в качестве альтернативы, вы можете вставить SQL запроса ниже)

  1. В окне конструктора добавьте таблицы «Клиенты» и «Заказы». Линия соединения
    автоматически добавляется для присоединения [Customers].[ID] к [Orders].[Customer ID].
  2. Дважды щелкните эту строку, чтобы открыть свойства соединения:

Обратите внимание, что здесь показаны названия левой и правой таблиц, а также
Вариант присоединения. В этом случае нам нужен вариант № 3: «Включить ВСЕ записи из заказов и только те, которые
записей из «Клиентов», где объединенные поля равны». Это правое внешнее соединение, так как заказы
таблица — это наша правая таблица.

Нажмите OK, чтобы вернуться в окно Designer, и добавьте следующие поля:

[Заказы].[ID заказа] Правда  
[Заказы]. [Идентификатор клиента] Правда  
[Клиенты].[ID] Ложь Иснулл

Окно дизайнера должно выглядеть так:


Запрос SQL для отсутствующих или потерянных записей

Оператор SQL для запроса выглядит следующим образом:

ВЫБЕРИТЕ заказы.[ID заказа]
ОТ клиентов
RIGHT JOIN Orders ON Customers.ID = Orders.[ID клиента]
ГДЕ (((Customers.ID) равен нулю))
 

Результаты запроса

Запустите запрос, и вы увидите все потерянные записи заказов (заказы, в которых есть несуществующий клиент).
Например, если клиент 1 отсутствует в таблице «Клиенты», результаты будут следующими:

(Обратите внимание, что ссылочная целостность была удалена из отношения для целей этого примера.
Обеспечьте ссылочную целостность, чтобы предотвратить потерянные записи. См. http://support.microsoft.com/kb/304466.
для получения подробной информации.)

Мы также можем использовать внешние соединения для поиска отсутствующих строк между таблицами. Предположим, что у нас есть два
копии таблицы Customers, но записи добавлялись и удалялись из обеих таблиц. Нам нужно увидеть
увидеть записи из обеих таблиц, которых нет в другой.

Чтобы увидеть строки в Customers, которых нет в Customers1, конструктор запросов выглядит так:

и SQL:

ВЫБЕРИТЕ Customers.ID, Customers.Company
ОТ клиентов
LEFT JOIN Customers1 ON Customers.ID = Customers1.ID
ГДЕ (((Customers1.ID) равен нулю))
 

Чтобы увидеть обратное (строки в Customer1, которых нет в Customers), дизайнер выглядит так:

и SQL

ВЫБЕРИТЕ Customers1.ID, Customers1.Company
ОТ клиентов
ПРАВО ПРИСОЕДИНЯЙТЕСЬ к Customers1 ON Customers.ID = Customers1.ID
ГДЕ (((Customers.ID) равен нулю))
 

Дополнительные ресурсы

  • Total Access Detective находит различия между базами данных и объектами Microsoft Access, включая данные между таблицами
  • Статья базы знаний Microsoft: Определение отношений между таблицами в базе данных Microsoft Access

Вернуться на страницу справочного центра запросов

Электронная почта Total Access 2022
Электронная почта всем в вашем списке доступа!


Всего визуальный агент 2021
Автоматизируйте работу с базой данных Access!


Обновлено
Microsoft Access to SQL Server Upsizing Center с техническими документами, ресурсами и
Экспресс-загрузки SQL Server

Использование объединенных запросов и операторов выбора в SQL и Access

Обычно при объединении двух наборов данных в реляционной базе данных цель состоит в том, чтобы данные в двух источниках каким-то образом сопоставлялись.

Например: «Клиенты» — «Счета», «Поставщики» — «Запчасти», «Сотрудники» — «Отсутствие».

Иногда, но чаще, чем вы думаете, может потребоваться «объединение», а не «объединение» наборов данных.

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

Например, чтобы объединить клиентов и поставщиков в один список рассылки, чтобы объявить о значительных изменениях или переезде в бизнесе.

 

Что такое запрос на объединение?

Union Query позволяет извлекать данные из любого количества таблиц. Думайте об этом как об операторе Select, который выбирает данные из любого количества источников в один большой список.

При стандартном связывании наборов данных два набора данных должны иметь часть информации, общее поле. В случае «От клиентов к счетам» это будет номер счета клиента, а затем этот общий факт/поле используется для «спаривания» или «связывания/объединения» записей из двух таблиц (9). 0256 Рис.1 ниже ).

В операторе Union Query/Select нет необходимости в этих связанных данных/поле.

 

тблКлиенты тблИнвойсы
Номер счета Номер счета:
Счет-фактура1
Счет2
Счет-фактура3….

В этом отношении количество результирующих строк/записей не будет превышать общее количество записей в исходной таблице Invoices.

 

Оператор Union Query/Select по существу размещает содержимое двух наборов данных «поверх» друг друга, перечисляя, например, имена и адреса электронной почты как набора данных «Клиент», так и набора данных «Поставщик». один длинный список.

Чтобы узнать больше о Access, прочитайте нашу статью об использовании запросов IF в качестве критериев поиска.

В этом отношении количество результирующих строк/записей обычно равно общему количеству записей из обеих таблиц, сложенных вместе.

 

В этом соотношении количество результирующих строк/записей обычно равно общему количеству записей из обеих таблиц, сложенных вместе.
тблКлиенты
Клиент 1: Имя, Адрес
Клиент 2: имя, адрес
тблПоставщики
Поставщик 1: Имя Адрес
Поставщик 2: Имя Адрес

 

Каковы их требования и ограничения?

Для создания объединенных запросов/операторов выбора два объединяемых источника данных должны иметь структурное сходство: одинаковое количество выбранных полей в том же порядке и с аналогичными типами данных.

В приведенном здесь сценарии обе таблицы «Клиент» и «Поставщик» будут иметь общие поля «Имя», «Адрес» и «Контакт», и именно эти поля мы хотим объединить для запуска слияния.

Два набора данных должны быть объединены с использованием одинакового количества полей в том же порядке, но не обязательно с одинаковыми именами и с одинаковыми типами данных. Если, например, в таблице «Клиенты» адресных строк больше, чем «Поставщиков», то для таблицы «Поставщики» необходимо создать фиктивную адресную строку.

В качестве альтернативы, если в одной таблице есть одно поле «Контакт», а в другой — «Имя» и «Фамилия», то поля необходимо будет объединить/объединить для создания единого эквивалента «Контакт».

Важная особенность операторов Union Queries/Select заключается в том, что повторяющиеся записи автоматически исключаются из окончательного списка записей.

Например, если Заказчик также является Поставщиком, он появится только один раз в окончательном заявлении Union Query/Select. Если по какой-либо причине требуются дубликаты, то вместо чистого UNION можно использовать оператор UNION ALL.

 

Как создать запрос на объединение в Access

Создать запрос на объединение в Access — довольно простая задача, поскольку ее можно выполнить, создав два сопоставимых стандартных запроса на выборку, а затем объединив SQL из двух запросов. в один.

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

Обратите внимание, что сортировка может применяться только к полям, содержащимся в первом запросе, но поскольку поля во втором запросе должны быть в том же порядке, конечным результатом этого объединения будут все компании в алфавитном порядке.

 

 

 

Оставив этот запрос открытым, создайте второй запрос для поставщиков.

Обратите внимание, что в приведенном ниже примере, поскольку tblCustomer имеет только одно поле Contact, а tblSuppliers — два, формула использовалась для объединения полей First Name и Last Name, чтобы они соответствовали одному полю Contact в tblCustomers. Это связано с тем, что два источника должны содержать одинаковое количество полей.

Также обратите внимание, что имена полей не обязательно должны совпадать, так как в первом запросе для клиентов две строки адреса — Address1 и Address2. Соответствующие строки в Поставщиках: Add1 и Add2.

 

 

 

Переключите этот второй запрос в представление SQL с помощью кнопок просмотра в правом нижнем углу экрана

  900 05

 

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

 

 

Вернитесь к Query1 для клиентов и снова переключитесь в представление SQL. Щелкните в конце отображаемого SQL и нажмите Enter, чтобы создать новую строку.

Подробнее о временных таблицах читайте здесь.

В начале новой строки введите слово UNION с последующим пробелом и вставьте содержимое Query2 the Suppliers, чтобы получить следующее: tomers. Контакты, табл.Клиенты .Address1, tblCustomers.Address2, tblCustomers.Town, tblCustomers.County, tblCustomers.PostCode, tblCustomers.EMail
ОТ tblCustomers
ЗАКАЗ ПО tblCustomers.Company;

ОБЪЕДИНЕНИЕ ВЫБЕРИТЕ tblSuppliers.Company, [Имя] & ” ” & [Фамилия] AS Contact, tblSuppliers.Add1, tblSuppliers.Add2, tblSuppliers.Town, tblSuppliers.County, tblSuppliers.PostCode, tblSup плоскогубцы.Электронная почта
ОТ таблицаПоставщики;

Просмотрите полный запрос в представлении таблицы, и будут отображаться 5 записей, поскольку в приведенном примере один клиент также является поставщиком, а дубликаты автоматически исключаются. Если вы хотите, чтобы дубликаты Заказчика и Поставщика отображались отдельно, добавьте слово ВСЕ между UNION SELECT: UNION ALL SELECT tblSuppliers.Company, [Firstname] & ” ” & [LastName] AS Contact

Запрос также отобразит пять записей в алфавитном порядке по названию компании/поставщика.

 

 

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

 

 

Подробнее о наших учебных курсах Microsoft Access в Лондоне, Гилфорде и на юге Великобритании см. здесь.

 

Как создать запрос на объединение в SQL

Операторы на объединение/выбор можно создавать в любом продукте, поддерживающем SQL. Требования (каковы их требования и ограничения) остаются одинаковыми во всех экземплярах, а в некоторых средах требуется, чтобы командные слова были в ЗАГЛАВНОМ РЕГИСТРЕ, как показано ниже.

SELECT tblTable1.Field1, tblTable1.Field2, tblTable1.Field3, tblTable1.Field4, tblTable1.Field5
ОТ tblTable1
ORDER BY tblTable1.Field1;

UNION SELECT tblTable2.