Сортировка и создание запросов в LibreOffice Base

Опубликовано: 26.02.14 / Автор: Катерина - 15 комментариев

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

В качестве «испытуемой» будем использовать базу данных клиентов, которую мы создали на прошлом уроке. Откроем её в LibreOffice Base и выберем пункт Таблицы в окне База данных:

Сортировка создание запросов LibreOffice Base

Сортировка представляет собой процесс упорядочения записей в таблице. Она может выполнятся по возрастанию или по убыванию значений ключа сортировки. Ключ сортировки — это поле, по значению которого производится сортировка. Ключей может быть несколько, и тогда они называются, соответственно, первичным, вторичным и так далее.
Для примера отсортируем дисконтные карты проценту предоставляемых ими скидок. Самую большую выведем сверху — это будет сортировка по убыванию. Откроем таблицу Дисконтные карты, двойным щелчком по ней (или выбором в контекстном меню кнопки Открыть) в окне Таблицы и выделим столбец Размер скидки — для этого щёлкнем по его «шапке». Затем выберем на панели инструментов кнопку По убыванию (base-kn-1) и нажмём её. Получим таблицу, отсортированную по размеру скидки клиента:

Сортировка создание запросов LibreOffice Base

Чтобы использовать несколько ключей сортировки нужно вызвать окно, определяющее их порядок. Оно вызывается кнопкой Сортировать (base-kn-2) и позволяет выбрать последовательность и порядок их использования. Например, так:

Сортировка создание запросов LibreOffice Base

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

Запросы используют для извлечения какой-либо информации из базы данных. Обычно данные в запросе должны отвечать условиям, определяемым пользователем, и содержат данные сразу из нескольких таблиц. Результат запроса обычно выводится в виде таблицы, все записи которой удовлетворяют заданным условиям.
В LibreOffice Base создавать запросы можно в режиме дизайна запросов, мастера запросов и SQL. Для начала рассмотрим его второй метод. Выберем пункт Запросы в окне База данных и пункт Использовать мастер для создания запросов... в окне Задачи. Откроется окно Мастера запросов, в котором на первом шаге нам будет предложено выбрать поля, выводимые в запросе. Предположим, нам нужно вывести список клиентов, у которых набралось больше 30 баллов и обзвонить их. Для такого списка нам понадобятся поле Количество баллов из таблицы Дисконтные карты и поля Имя, Фамилия, Номер телефона из таблицы Клиенты. Выбираем в выпадающем списке таблицу и перекидываем нужное из окна Доступные поля в окно Поля в запросе:

Сортировка создание запросов LibreOffice Base

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

Сортировка создание запросов LibreOffice Base

Теперь зададим условие. У нас оно одно, но в общем случае их может быть несколько и для них можно определить, вместе они должны выполняться или для выборки будет достаточно только одного из них:

Сортировка создание запросов LibreOffice Base

Тип запроса оставим по умолчанию — Детальный. Далее нам предлагается выбрать альтернативные названия полей. Их необязательно, но удобно использовать, чтобы поля в таблице запросов были более понятными пользователю. Например, так:

Сортировка создание запросов LibreOffice Base

Также можно использовать псевдоним, если поля из разных таблиц имеют одно и то же имя.
В конце остаётся только определить название запроса и выбрать действие с ним:

Сортировка создание запросов LibreOffice Base

Нажимаем кнопку Готово и получаем таблицу с запросом:

Сортировка создание запросов LibreOffice Base

Очевидно, что в таблице отображается что-то не то. А именно, для каждой записи первой таблицы выводятся все записи второй. Это значит, что таблицы, из которых мы получаем информацию, не связаны между собой. Чтобы создать эту связь откроем запрос в Конструкторе запросов — в окне Запросы правой кнопкой вызываем контекстное меню для нашего запроса и выбираем пункт Изменить. Откроется окно, в котором отобразятся таблицы. Щёлкнем по полю Номер дисконтной карты таблицы Клиенты и перетащим курсор на поле Номер дисконтной карты таблицы Дисконтные карты. Появится линия, соединяющая эти поля:

Сортировка создание запросов LibreOffice Base

Также проверим условие выбора клиентов и уберём в выражении >’30’ одинарные кавычки — иначе возникнет синтаксическая ошибка в выполнении запроса.
После соединения таблиц снова выполним запрос кнопкой Выполнить запрос (base-kn-3) или F5. Или сначала сохраним запрос кнопкой Сохранить и запустим его из главного окна базы. Получим искомый результат:

Сортировка создание запросов LibreOffice Base

Другой путь — создание запроса в режиме дизайна. Создадим в нём запрос с тем же условиями, что и выше. Нажимаем кнопку Создать запрос в режиме дизайна... и в открывшемся окне добавления выбираем нужные нам таблицы и нажимаем кнопку Добавить (два раза, так как таблиц две):

Сортировка создание запросов LibreOffice Base

В верхней части экрана при этом появятся выбранные таблицы, а в нижней мы будем формировать запрос. Сначала в строке Поле последовательно укажем все нужные нам поля. Затем, в строчке Псевдоним под ними впишем альтернативные названия. Строки Таблица и Видимый заполняются автоматический, нам остаётся только указать параметры сортировки и условие. В нашем случае готовая таблица запроса будет выглядеть так:

Сортировка создание запросов LibreOffice Base

Теперь остаётся только сохранить запрос соответствующей кнопкой (base-kn-4) и выполнить его кнопкой base-kn-3. Закономерно получим такой же результат, как в прошлый раз:

Сортировка создание запросов LibreOffice Base

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

Создавать запрос в режиме SQL мы не будем, так как это наиболее сложный способ, который предполагает, что пользователь умеет писать запросы на этом языке. Однако, любой созданный ранее запрос можно увидеть в виде команд SQL, если в контекстном меню запросы выбрать пункт Редактировать в режиме SQL...

Чтобы напечатать запрос или таблицу из базы для дальнейшего использования, нужно открыть текстовый документ или электронную таблицу, которые мы будем отправлять на печать, и базу данных, из которой будем брать информацию. Затем выполним перетаскивание имени нужной таблицы/запроса в открытый документ, что автоматически откроет диалоговое окно Вставка столбцов базы данных. В нём будет предложено выбрать формат вставки данных и столбцы, которые должны быть в таблице:

Сортировка создание запросов LibreOffice Base

Также можно нажать кнопку Автоформат и выбрать внешний вид вставляемой таблицы. Остаётся нажать кнопку ОК и распечатать документ как обычно — с помощью команды Файл->Печать.

На этом уроке мы постарались рассмотреть основные приёмы, необходимые для создания запросов и выполнения сортировки в базах данных LibreOffice Base. Однако, если у вас остались вопросы по данной теме, вы можете задать их в комментариях или на нашем форуме. Мы постараемся оперативно на них ответить 🙂

15 comments

  1. Михаил - 21 мая 2014 Reply

    Спасибо за статью! Все предельно ясно. Жаль что по Libre base так мало информации на русском языке. Когда уже будет полноценный учебник…
    Просьба в таком же ключе написать статью по созданию форм.

    Вопрос на засыпку: можно ли в base сделать ссылку на документ типа гиперссылки в MS Excel и как? Задача: база данных чертежей — нужно чтобы из нее можно было открыть чертеж в формате pdf или папку с чертежами простым кликом.

    Спасибо

    • Катерина - 17 июня 2014 Reply

      Добрый день, Михаил!
      Прошу простить, что долго не отвечала — ваш комментарий по неведомой мне причине попал в спам. Но я его нашла и вернула на место 🙂
      Да, информации по Base и LibreOffice немного, но выполнение той или иной задачи очень часто здесь и в OpenOffice практически идентично, поэтому иногда можно взять на вооружение их мануалы.
      Статья по формам будет следующей вышедшей на сайте и уже готовится к публикации.
      Вопросу на засыпку обещаю уделить время в ближайшие дни — задача интересная и не тривиальная 🙂

  2. Ярослав - 30 мая 2014 Reply

    Благодарю за урок. Скажите, а по созданию форм и работе с ними что-то подобное планируется?

    • Катерина - 30 мая 2014 Reply

      Спасибо, Ярослав! Приятно, когда твоя работа оказывается полезной. Конечно, формы — следующая тема в цикле статей о Base.

  3. Светлана - 27 октября 2014 Reply

    Здравствуйте, о хотела спросить об условиях поиска. Мне нужно выделить препараты, которые содержат дубильные вещества. Я ввожу в строку ‘дубильные вещества’ но там появляется 0. Что делаю неправильно? Спасибо

    • Катерина - 29 октября 2014 Reply

      Светлана, проверила на своей базе и таблицы и запросы — текстовая строка находится без проблем и там и там. Для этого открываю таблицу на просмотр, выбираю значок с лупой и в первую же строку ввожу нужный текст без кавычек. Если делаете этот поиск в виде запроса, то куда вводите строку? Надо в поле Критерий без кавычек (Base сам их подставляет к тексту).

  4. Алексей - 25 ноября 2014 Reply

    Версия LibreOffice 4.3.4.1. Всё сделал точно так, как написано. Две таблицы сделал, но запрос сделать не получается. В последнем пункте в окошке «Обзор» пусто, кнопка Готово нажимается, но никаких действий не происходит. Если возвращаться кнопкой Назад, то второй шаг постоянно сбрасывает установки, хотя на остальных шагах всё остаётся так, как я и поставил. Если просто закрыть Мастер запросов, то запрос не создаётся.

  5. Наталия - 23 декабря 2014 Reply

    У меня случай, аналогичный случаю Алексея. На последнем шаге пусто в окне «Обзор», поэтому не получается сохранить запрос. Помогите, у меня по программе создание баз данных, нужно со студентами сделать базы данных по их специальности, а у меня затык…

    • Катерина - 23 декабря 2014 Reply

      Добрый день, Наталия!
      Сейчас прогнала ещё раз создание этого запроса — тоже не отрабатывает в таком виде. Видимо, в Мастере есть какая-то бага. Я вам посоветую создать запрос, как написано в статье, но не вписывать условие поиска на третьем шаге. Просто пройти дальше. А в конце вы всё равно будете вручную создавать связи в режиме редактирования, тогда его и добавьте (в таблице под связями заполните ячейку Критерий столбца КоличествоБаллов значением > 30 без кавычек). Тогда всё отработает с первого раза 🙂

  6. Наталия - 24 декабря 2014 Reply

    Спасибо

  7. Ирина - 15 октября 2015 Reply

    Добрый день!
    Подскажите есть ли такая возможность при создании запросов получать в конце сумму по определенному столбцу. Есть созданная таблица счетов по контрагентам с указанием суммы. А запрос создан на её основе по конкретному контрагенту и я хочу при выполнении запроса получать сумму всех счетов.

  8. Дарья - 4 апреля 2016 Reply

    Здравствуйте!
    Подскажите пожалуйста, как создать вложенный запрос на языке QBE? В режиме SQL это возможно, а на QBE не могу сделать ссылку на вложенный запрос, никак не найду правильный синтаксис. Спасибо.

  9. Виктория - 6 мая 2016 Reply

    Здравствуйте. Не подскажете мне как можно сделать перекрестный запрос, запрос на поиск информации по критерию и запрос с параметром, и в чем различие двух последних?

Оставить комментарий