Следующее, чему следует научиться после создания базы данных, — работа с данными в ней. Сегодня рассмотрим, как в LibreOffice Base выполняются сортировка и создание запросов к базе данных, а также узнаем, как их печатать.
В качестве «испытуемой» будем использовать базу данных клиентов, которую мы создали на прошлом уроке. Откроем её в LibreOffice Base и выберем пункт Таблицы в окне База данных:
Сортировка представляет собой процесс упорядочения записей в таблице. Она может выполнятся по возрастанию или по убыванию значений ключа сортировки. Ключ сортировки — это поле, по значению которого производится сортировка. Ключей может быть несколько, и тогда они называются, соответственно, первичным, вторичным и так далее.
Для примера отсортируем дисконтные карты проценту предоставляемых ими скидок. Самую большую выведем сверху — это будет сортировка по убыванию. Откроем таблицу Дисконтные карты, двойным щелчком по ней (или выбором в контекстном меню кнопки Открыть) в окне Таблицы и выделим столбец Размер скидки — для этого щёлкнем по его «шапке». Затем выберем на панели инструментов кнопку По убыванию () и нажмём её. Получим таблицу, отсортированную по размеру скидки клиента:
Чтобы использовать несколько ключей сортировки нужно вызвать окно, определяющее их порядок. Оно вызывается кнопкой Сортировать () и позволяет выбрать последовательность и порядок их использования. Например, так:
Задание нескольких ключей позволяет определить, как будут упорядочены записи, у которых совпадает ключ сортировки, и унифицировать работу с данными.
Запросы используют для извлечения какой-либо информации из базы данных. Обычно данные в запросе должны отвечать условиям, определяемым пользователем, и содержат данные сразу из нескольких таблиц. Результат запроса обычно выводится в виде таблицы, все записи которой удовлетворяют заданным условиям.
В LibreOffice Base создавать запросы можно в режиме дизайна запросов, мастера запросов и SQL. Для начала рассмотрим его второй метод. Выберем пункт Запросы в окне База данных и пункт Использовать мастер для создания запросов... в окне Задачи. Откроется окно Мастера запросов, в котором на первом шаге нам будет предложено выбрать поля, выводимые в запросе. Предположим, нам нужно вывести список клиентов, у которых набралось больше 30 баллов и обзвонить их. Для такого списка нам понадобятся поле Количество баллов из таблицы Дисконтные карты и поля Имя, Фамилия, Номер телефона из таблицы Клиенты. Выбираем в выпадающем списке таблицу и перекидываем нужное из окна Доступные поля в окно Поля в запросе:
|
Нажимаем кнопку Дальше и в следующем окне определяем порядок сортировки данных в итоговой таблице. Допустим, в начале списка нам хочется видеть клиентов с большим количеством баллов. Тогда сортировка будет такой:
Теперь зададим условие. У нас оно одно, но в общем случае их может быть несколько и для них можно определить, вместе они должны выполняться или для выборки будет достаточно только одного из них:
Тип запроса оставим по умолчанию — Детальный. Далее нам предлагается выбрать альтернативные названия полей. Их необязательно, но удобно использовать, чтобы поля в таблице запросов были более понятными пользователю. Например, так:
|
Также можно использовать псевдоним, если поля из разных таблиц имеют одно и то же имя.
В конце остаётся только определить название запроса и выбрать действие с ним:
Нажимаем кнопку Готово и получаем таблицу с запросом:
Очевидно, что в таблице отображается что-то не то. А именно, для каждой записи первой таблицы выводятся все записи второй. Это значит, что таблицы, из которых мы получаем информацию, не связаны между собой. Чтобы создать эту связь откроем запрос в Конструкторе запросов — в окне Запросы правой кнопкой вызываем контекстное меню для нашего запроса и выбираем пункт Изменить. Откроется окно, в котором отобразятся таблицы. Щёлкнем по полю Номер дисконтной карты таблицы Клиенты и перетащим курсор на поле Номер дисконтной карты таблицы Дисконтные карты. Появится линия, соединяющая эти поля:
Также проверим условие выбора клиентов и уберём в выражении >’30’ одинарные кавычки — иначе возникнет синтаксическая ошибка в выполнении запроса.
После соединения таблиц снова выполним запрос кнопкой Выполнить запрос () или F5. Или сначала сохраним запрос кнопкой Сохранить и запустим его из главного окна базы. Получим искомый результат:
Другой путь — создание запроса в режиме дизайна. Создадим в нём запрос с тем же условиями, что и выше. Нажимаем кнопку Создать запрос в режиме дизайна... и в открывшемся окне добавления выбираем нужные нам таблицы и нажимаем кнопку Добавить (два раза, так как таблиц две):
В верхней части экрана при этом появятся выбранные таблицы, а в нижней мы будем формировать запрос. Сначала в строке Поле последовательно укажем все нужные нам поля. Затем, в строчке Псевдоним под ними впишем альтернативные названия. Строки Таблица и Видимый заполняются автоматический, нам остаётся только указать параметры сортировки и условие. В нашем случае готовая таблица запроса будет выглядеть так:
|
Теперь остаётся только сохранить запрос соответствующей кнопкой () и выполнить его кнопкой . Закономерно получим такой же результат, как в прошлый раз:
Очевидно, что создание запроса в режиме мастера состоит из большего числа шагов и имеет ряд не очевидных нюансов. Поэтому для создания запросов мы рекомендуем пользоваться режимом дизайна.
Создавать запрос в режиме SQL мы не будем, так как это наиболее сложный способ, который предполагает, что пользователь умеет писать запросы на этом языке. Однако, любой созданный ранее запрос можно увидеть в виде команд SQL, если в контекстном меню запросы выбрать пункт Редактировать в режиме SQL...
Чтобы напечатать запрос или таблицу из базы для дальнейшего использования, нужно открыть текстовый документ или электронную таблицу, которые мы будем отправлять на печать, и базу данных, из которой будем брать информацию. Затем выполним перетаскивание имени нужной таблицы/запроса в открытый документ, что автоматически откроет диалоговое окно Вставка столбцов базы данных. В нём будет предложено выбрать формат вставки данных и столбцы, которые должны быть в таблице:
Также можно нажать кнопку Автоформат и выбрать внешний вид вставляемой таблицы. Остаётся нажать кнопку ОК и распечатать документ как обычно — с помощью команды Файл->Печать.