Сортировка и создание запросов в LibreOffice Base
Следующее, чему следует научиться после создания базы данных, — работа с данными в ней. Сегодня рассмотрим, как в LibreOffice Base выполняются сортировка и создание запросов к базе данных, а также узнаем, как их печатать.
В качестве «испытуемой» будем использовать базу данных клиентов, которую мы создали на прошлом уроке. Откроем её в LibreOffice Base и выберем пункт Таблицы
в окне База данных
:
Сортировка представляет собой процесс упорядочения записей в таблице. Она может выполнятся по возрастанию или по убыванию значений ключа сортировки. Ключ сортировки — это поле, по значению которого производится сортировка. Ключей может быть несколько, и тогда они называются, соответственно, первичным, вторичным и так далее.
Для примера отсортируем дисконтные карты проценту предоставляемых ими скидок. Самую большую выведем сверху — это будет сортировка по убыванию. Откроем таблицу Дисконтные карты, двойным щелчком по ней (или выбором в контекстном меню кнопки Открыть)
в окне Таблицы
и выделим столбец Размер скидки
— для этого щёлкнем по его «шапке». Затем выберем на панели инструментов кнопку По убыванию
() и нажмём её. Получим таблицу, отсортированную по размеру скидки клиента:
Чтобы использовать несколько ключей сортировки нужно вызвать окно, определяющее их порядок. Оно вызывается кнопкой Сортировать
() и позволяет выбрать последовательность и порядок их использования. Например, так:
Задание нескольких ключей позволяет определить, как будут упорядочены записи, у которых совпадает ключ сортировки, и унифицировать работу с данными.
Запросы используют для извлечения какой-либо информации из базы данных. Обычно данные в запросе должны отвечать условиям, определяемым пользователем, и содержат данные сразу из нескольких таблиц. Результат запроса обычно выводится в виде таблицы, все записи которой удовлетворяют заданным условиям.
В LibreOffice Base создавать запросы можно в режиме дизайна запросов, мастера запросов и SQL. Для начала рассмотрим его второй метод. Выберем пункт Запросы
в окне База данных
и пункт Использовать мастер для создания запросов...
в окне Задачи
. Откроется окно Мастера запросов, в котором на первом шаге нам будет предложено выбрать поля, выводимые в запросе. Предположим, нам нужно вывести список клиентов, у которых набралось больше 30 баллов и обзвонить их. Для такого списка нам понадобятся поле Количество баллов
из таблицы Дисконтные карты и поля Имя, Фамилия, Номер телефона
из таблицы Клиенты. Выбираем в выпадающем списке таблицу и перекидываем нужное из окна Доступные поля
в окно Поля в запросе
:
Нажимаем кнопку Дальше
и в следующем окне определяем порядок сортировки данных в итоговой таблице. Допустим, в начале списка нам хочется видеть клиентов с большим количеством баллов. Тогда сортировка будет такой:
Теперь зададим условие. У нас оно одно, но в общем случае их может быть несколько и для них можно определить, вместе они должны выполняться или для выборки будет достаточно только одного из них:
Тип запроса оставим по умолчанию — Детальный
. Далее нам предлагается выбрать альтернативные названия полей. Их необязательно, но удобно использовать, чтобы поля в таблице запросов были более понятными пользователю. Например, так:
Также можно использовать псевдоним, если поля из разных таблиц имеют одно и то же имя.
В конце остаётся только определить название запроса и выбрать действие с ним:
Нажимаем кнопку Готово и получаем таблицу с запросом:
Очевидно, что в таблице отображается что-то не то. А именно, для каждой записи первой таблицы выводятся все записи второй. Это значит, что таблицы, из которых мы получаем информацию, не связаны между собой. Чтобы создать эту связь откроем запрос в Конструкторе запросов — в окне Запросы
правой кнопкой вызываем контекстное меню для нашего запроса и выбираем пункт Изменить
. Откроется окно, в котором отобразятся таблицы. Щёлкнем по полю Номер дисконтной карты
таблицы Клиенты и перетащим курсор на поле Номер дисконтной карты
таблицы Дисконтные карты. Появится линия, соединяющая эти поля:
Также проверим условие выбора клиентов и уберём в выражении >’30’ одинарные кавычки — иначе возникнет синтаксическая ошибка в выполнении запроса.
После соединения таблиц снова выполним запрос кнопкой Выполнить запрос
() или F5
. Или сначала сохраним запрос кнопкой Сохранить
и запустим его из главного окна базы. Получим искомый результат:
Другой путь — создание запроса в режиме дизайна. Создадим в нём запрос с тем же условиями, что и выше. Нажимаем кнопку Создать запрос в режиме дизайна...
и в открывшемся окне добавления выбираем нужные нам таблицы и нажимаем кнопку Добавить
(два раза, так как таблиц две):
В верхней части экрана при этом появятся выбранные таблицы, а в нижней мы будем формировать запрос. Сначала в строке Поле
последовательно укажем все нужные нам поля. Затем, в строчке Псевдоним
под ними впишем альтернативные названия. Строки Таблица
и Видимый
заполняются автоматический, нам остаётся только указать параметры сортировки и условие. В нашем случае готовая таблица запроса будет выглядеть так:
Теперь остаётся только сохранить запрос соответствующей кнопкой () и выполнить его кнопкой . Закономерно получим такой же результат, как в прошлый раз:
Очевидно, что создание запроса в режиме мастера состоит из большего числа шагов и имеет ряд не очевидных нюансов. Поэтому для создания запросов мы рекомендуем пользоваться режимом дизайна.
Создавать запрос в режиме SQL мы не будем, так как это наиболее сложный способ, который предполагает, что пользователь умеет писать запросы на этом языке. Однако, любой созданный ранее запрос можно увидеть в виде команд SQL, если в контекстном меню запросы выбрать пункт Редактировать в режиме SQL...
Чтобы напечатать запрос или таблицу из базы для дальнейшего использования, нужно открыть текстовый документ или электронную таблицу, которые мы будем отправлять на печать, и базу данных, из которой будем брать информацию. Затем выполним перетаскивание имени нужной таблицы/запроса в открытый документ, что автоматически откроет диалоговое окно Вставка столбцов базы данных
. В нём будет предложено выбрать формат вставки данных и столбцы, которые должны быть в таблице:
Также можно нажать кнопку Автоформат
и выбрать внешний вид вставляемой таблицы. Остаётся нажать кнопку ОК
и распечатать документ как обычно — с помощью команды Файл->Печать
.
На этом уроке мы постарались рассмотреть основные приёмы, необходимые для создания запросов и выполнения сортировки в базах данных LibreOffice Base. Однако, если у вас остались вопросы по данной теме, вы можете задать их в комментариях или на нашем форуме. Мы постараемся оперативно на них ответить 🙂
15 comments
Михаил - 21 мая 2014
Спасибо за статью! Все предельно ясно. Жаль что по Libre base так мало информации на русском языке. Когда уже будет полноценный учебник…
Просьба в таком же ключе написать статью по созданию форм.
Вопрос на засыпку: можно ли в base сделать ссылку на документ типа гиперссылки в MS Excel и как? Задача: база данных чертежей — нужно чтобы из нее можно было открыть чертеж в формате pdf или папку с чертежами простым кликом.
Спасибо
Катерина - 17 июня 2014
Добрый день, Михаил!
Прошу простить, что долго не отвечала — ваш комментарий по неведомой мне причине попал в спам. Но я его нашла и вернула на место 🙂
Да, информации по Base и LibreOffice немного, но выполнение той или иной задачи очень часто здесь и в OpenOffice практически идентично, поэтому иногда можно взять на вооружение их мануалы.
Статья по формам будет следующей вышедшей на сайте и уже готовится к публикации.
Вопросу на засыпку обещаю уделить время в ближайшие дни — задача интересная и не тривиальная 🙂
Ярослав - 30 мая 2014
Благодарю за урок. Скажите, а по созданию форм и работе с ними что-то подобное планируется?
Катерина - 30 мая 2014
Спасибо, Ярослав! Приятно, когда твоя работа оказывается полезной. Конечно, формы — следующая тема в цикле статей о Base.
Ярослав - 31 мая 2014
Ждём!
Светлана - 27 октября 2014
Здравствуйте, о хотела спросить об условиях поиска. Мне нужно выделить препараты, которые содержат дубильные вещества. Я ввожу в строку ‘дубильные вещества’ но там появляется 0. Что делаю неправильно? Спасибо
Катерина - 29 октября 2014
Светлана, проверила на своей базе и таблицы и запросы — текстовая строка находится без проблем и там и там. Для этого открываю таблицу на просмотр, выбираю значок с лупой и в первую же строку ввожу нужный текст без кавычек. Если делаете этот поиск в виде запроса, то куда вводите строку? Надо в поле Критерий без кавычек (Base сам их подставляет к тексту).
Алексей - 25 ноября 2014
Версия LibreOffice 4.3.4.1. Всё сделал точно так, как написано. Две таблицы сделал, но запрос сделать не получается. В последнем пункте в окошке «Обзор» пусто, кнопка Готово нажимается, но никаких действий не происходит. Если возвращаться кнопкой Назад, то второй шаг постоянно сбрасывает установки, хотя на остальных шагах всё остаётся так, как я и поставил. Если просто закрыть Мастер запросов, то запрос не создаётся.
Наталия - 23 декабря 2014
У меня случай, аналогичный случаю Алексея. На последнем шаге пусто в окне «Обзор», поэтому не получается сохранить запрос. Помогите, у меня по программе создание баз данных, нужно со студентами сделать базы данных по их специальности, а у меня затык…
Катерина - 23 декабря 2014
Добрый день, Наталия!
Сейчас прогнала ещё раз создание этого запроса — тоже не отрабатывает в таком виде. Видимо, в Мастере есть какая-то бага. Я вам посоветую создать запрос, как написано в статье, но не вписывать условие поиска на третьем шаге. Просто пройти дальше. А в конце вы всё равно будете вручную создавать связи в режиме редактирования, тогда его и добавьте (в таблице под связями заполните ячейку Критерий столбца КоличествоБаллов значением > 30 без кавычек). Тогда всё отработает с первого раза 🙂
Наталия - 24 декабря 2014
Спасибо
Ирина - 15 октября 2015
Добрый день!
Подскажите есть ли такая возможность при создании запросов получать в конце сумму по определенному столбцу. Есть созданная таблица счетов по контрагентам с указанием суммы. А запрос создан на её основе по конкретному контрагенту и я хочу при выполнении запроса получать сумму всех счетов.
Дарья - 4 апреля 2016
Здравствуйте!
Подскажите пожалуйста, как создать вложенный запрос на языке QBE? В режиме SQL это возможно, а на QBE не могу сделать ссылку на вложенный запрос, никак не найду правильный синтаксис. Спасибо.
Дарья - 4 апреля 2016
Я имею в виду в режиме дизайна
Виктория - 6 мая 2016
Здравствуйте. Не подскажете мне как можно сделать перекрестный запрос, запрос на поиск информации по критерию и запрос с параметром, и в чем различие двух последних?