Добавил:
sora.alai.102@gmail.com Делаю работы на заказ. Какие именно? Пишите. Или регайтесь на бирже, где я работаю: https://vsesdal.com/promo?ref=748568 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Метод. указания к ЛР № 4

.pdf
Скачиваний:
28
Добавлен:
25.11.2018
Размер:
261.65 Кб
Скачать

Лабораторная работа 4

Упорядочивание в запросах

Давайте напишем запрос, который получает из таблицы Справочник.Еда код и название еды:

ВЫБРАТЬ Код,

Наименование

ИЗ

Справочник.Еда

С большой долей вероятности у вас получится следующий результат:

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

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

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

Секция УПОРЯДОЧИТЬ ПО

Поля по которым требуется упорядочить запрос перечисляются в секции УПОРЯДОЧИТЬ ПО через запятую:

Следом за именем поля упорядочивания может идти одно из двух ключевых слов:

ВОЗР - упорядочивание по возрастанию.

УБЫВ - упорядочивание по убыванию.

Если не указывать ни одно из этих слов, считается, что сортировка идёт по возрастанию.

Упорядочим результат нашего запроса по убыванию поля Код:

ВЫБРАТЬ Код,

Наименование

ИЗ

Справочник.Еда УПОРЯДОЧИТЬ ПО

Код УБЫВ

По возрастанию поля Наименование (алфавитный порядок):

ВЫБРАТЬ Код,

Наименование

ИЗ

Справочник.Еда УПОРЯДОЧИТЬ ПО

Наименование ВОЗР

А теперь упорядочим таблицу по вкусам и цветам из справочника еда так, чтобы сначала шла сортировка по полю Вкус по возрастанию, а затем (среди строчек с одинаковым значением поля Вкус) шла сортировка по полю Цвет по убыванию:

ВЫБРАТЬ Вкус, Цвет

ИЗ

Справочник.Еда УПОРЯДОЧИТЬ ПО

Вкус.Наименование ВОЗР, Цвет.Наименование УБЫВ

Отдельно обращаю ваше внимание на то, что мы указали сортировку не по самим полям Вкус и Цвет, а по их строковому реквизиту Наименование. Это связано с тем, что сортировка возможна лишь по полям имеющим один из типов: Строка, Число, Дата.

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

Секция АВТОУПОРЯДОЧИВАНИЕ

А теперь зайдите в конфигуратор и найдите настройку данных для справочника Еда:

Обратите внимание на то, что основным представлением элементов справочника выбрано поле Наименование.

Это означает, что поле Наименование будет полем сортировки таблицы Справочник.Еда по умолчанию.

Таким образом, если сделать автоупорядочивание запроса добавив секцию

АВТОУПОРЯДОЧИВАНИЕ:

ВЫБРАТЬ Код,

Наименование

ИЗ

Справочник.Еда АВТОУПОРЯДОЧИВАНИЕ

то результаты будут отсортированы по полю Наименование по возрастанию:

Секция АВТОУПОРЯДОЧИВАНИЕ может использоваться совместно с секцией

УПОРЯДОЧИТЬ ПО.

В этом случае сначала будет идти сортировка по указанным полям (УПОРЯДОЧИТЬ ПО), а затем по полям сортировки по умолчанию (АВТОУПОРЯДОЧИВАНИЕ).

Секция АВТОУПОРЯДОЧИВАНИЕ подходит для универсальных запросов, когда разработчик не может предвидеть из каких таблиц будут запрашиваться данные.

Во всех остальных случаях использовать автоупорядочивание крайне нежелательно.

Самостоятельное задание

а) Напишите запрос, который получает список клиентов, упорядоченный по их любимому цвету по возрастанию:

б) Напишите запрос, который получает список заказов клиентов (таблица Документ.ЗаказКлиента), упорядоченный по дате по убыванию:

в) Напишите запрос, который получает список документов "Установка цен на еду для клиентов" (таблица Документ.УстановкаЦенНаЕдуДляКлиентов), упорядоченный по клиентам по возрастанию, а затем по датам по убыванию: