Рис. 11.27
Отправив запрос на выполнение, вы получите таблицу, содержащую отобранные сведения (см. рис. 11.28). Она похожа на таблицу с рис. 11.13, но вместо кода содержит название страны.
Рис. 11.28
Если вы теперь откроете инструкцию SQL (рис. 11.29), то увидите в ней новый элемент, который указывает на связь между таблицами Фирмыи Страны.Это ключевое слово INNER JOIN. Операция INNER JOIN доступна в любом предложении FROM и позволяет осуществить самое простое связывание – объединить записи двух таблиц, если их связующие поля содержат одинаковые значения. При этом INNER JOIN определяет объединяемые таблицы, а другое ключевое слово ON – объединяемые поля, которые имеют одинаковые значения.
Рис. 11.29
Теперь попробуем усложнить задачу и сформировать универсальный запрос. Предположим, вы постоянно работаете с той частью объединенного банка данных, которая включает сведения о контрольно-измерительных приборах. Иначе говоря, вы имеете дело с базой данных Контрольно-измерительные приборы.Вам приходится создавать запросы, очень разнообразные по своему построению. Однако вам некогда вникать в структуру таблиц и связей между ними, а также разбираться в том, какие таблицы нужны для подготовки ответа на какой-либо запрос. Необходимо более простое решение. Конечно, можно построить запрос с параметрами, но есть и другой путь. Он не противоречит первому варианту, а скорее дополняет его.
Введите в окно конструктора все таблицы базы данных Контрольно-измерительные приборысо всеми их связями (см. рис. 2.1). (Позднее дело дойдет и до других БД в составе объединенного банка данных.) Ничего не изменяя в ее структуре, в бланке запроса будем формировать запросы различных типов.
Допустим, вы хотите узнать, какие приборы используются для измерения тех или иных физических параметров. На рис. 11.30 показан бланк соответствующего запроса. В этом же окне конструктора вы видите макеты всех таблиц, содержащихся в нашей базе данных. (Отметим, что не все таблицы будут привлекаться в конкретных запросах.) На рис. 11.31 выведена результирующая выборка записей, полученная в ответ на ваш запрос.
Рис. 11.30
Рис. 11.31
На рис. 11.32 показана инструкция SQL для этого запроса. Мы видим, что все ключевые слова сохраняются, как и прежде, на своих местах, но их содержание становится богаче и разнообразнее.
Рис. 11.32
Предположим, что пользователь интересуется другой проблемой: какими приборами для измерения кислотности занимается менеджер по фамилии Флеминг. На рис. 11.33 показан заполненный бланк соответствующего запроса. Вы видите, что здесь в разных столбцах введено два условия отбора: «*кислотн*» и «Флеминг».
Рис. 11.33
В то же время перечень таблиц и схема связей между ними остаются неизменными. Результат выполнения этого запроса приведен на рис. 11.34. Отобраны сведения лишь о тех приборах для измерения кислотности, которыми ведает менеджер Флеминг. Если сравнить рис. 11.34 с рис. 11.31, то можно легко заметить, что число отобранных записей существенно сократилось – с 91 до 5.
Рис. 11.34
Пояснения к инструкции SQL
Теперь более подробно исследуем инструкцию SQL, приведенную на рис. 11.35. Мы несколько раз усложняли структуру запроса, поэтому и инструкция нуждается в определенном комментарии.
Рис. 11.35
В предложении с ключевым словом SELECT содержится перечень используемых в запросе таблиц и их полей. Как уже говорилось, группы (Имя таблицы. Имя поля) разделяются между собой запятыми, а внутри группы имя таблицы отделяется от имени поля точкой. Если в имени есть пробел, оно заключается в квадратные скобки. Параметр SELECT имеет следующий синтаксис:
SELECT [предикат] [* | таблица.* |] [таблица. ]поле 1
[AS псевдоним 1] [, [таблица. ]поле 2 [AS псевдоним 2] […]]}
FROM выражение […] [IN внешняя База Данных]
[WHERE…]
[GROUP BY…]
[HAVING…]
[ORDER BY…]
[WITH OWNERACCESS OPTION]
Перечислим аргументы ключевого слова SELECT:
• предикат. Задается один из следующих предикатов отбора:
– ALL;
– DISTINCT;
– DISTINCTROW;
– TOP.
Предикаты ограничивают число возвращаемых записей. Если предикат не указан, по умолчанию используется ALL. Это означает, что выбраны все поля заданной таблицы или таблиц;
• таблица. Указывается имя таблицы, из которой надо отобрать записи;
• поле_1, поле_2. Указываются имена полей, откуда следует отбирать данные. Сведения будут извлекаться из полей в том порядке, в каком они перечислены;
• псевдоним_1, псевдоним_2. Задаются имена, которые станут заголовками столбцов вместо названий, заданных по умолчанию;
Читать дальше
Конец ознакомительного отрывка
Купить книгу