|
Программирование >> Построение запросов sql
Рис. 3.48. Результат выполнения запроса с сортировкой по убыванию Можно производить сортировку по нескольким столбцам. Например, требуется вывести значения оплат абонентов с лицевыми счетами 136169, 005488, 443690. Результаты запроса упорядочить по возрастанию номеров лицевых счетов, а затем по значению оплаты. Соответствующий запрос имеет следующий вид: SELECT AccountCd, PaySum FROM PaySumma WHERE AccountCd IN (136169,005488,443690) ORDER BY AccountCd, PaySum;. Результат выполнения запроса представлен на рис. 3.49.
Рис. 3.49. Результат выполнения запроса с сортировкой по нескольким столбцам В списке элементов сортировки для столбцов в ТРЗ с именами и без имен (например, вычисляемых столбцов) можно указывать их порядковый номер в списке возвращаемых элементов предложения SELECT. Примером этому может служить следующий запрос: SELECT DISTINCT AccountCD, (NachislSum +100) AS NachislSum 100 FROM NachislSunma WHERE GazServiceCD =2 AND AccountCD STARTING WITH 1 ORDER BY 2;. Результат выполнения запроса представлен на рис. 3.50. Здесь сортировка выполняется по значениям вычисляемого столбца (NachislSum+100), который имеет порядковый номер 2 в списке возвращаемых элементов предложения SELECT.
Рис. 3.50. Результат выполнения запроса с сортировкой по номеру столбца В предложении ORDER BY можно указать псевдоним столбца, например NachislSum 100 в предыдущем примере. Результат выполнения будет совпадать с результатом выполнения предыдущего запроса. Сортировку по номеру элемента в списке можно использовать при выборке всех столбцов из таблицы. Пусть, например, требуется вывести все данные об улицах, отсортированные по названию улиц. Запрос будет выглядеть следующим образом: SELECT * FROM Street ORDER BY 2;. Результат выполнения запроса представлен на рис. 3.51.
Рис. 3.51. Результат выполнения запроса с сортировкой при выборке всех данных Примечание. Не рекомендуется в приложениях использовать запросы с сортировкой по номерам столбцов. Это связано с тем, что со временем структура таблицы может измениться, например, в результате добавления или удаления столбцов. Как следствие, запрос с сортировкой по порядковому номеру может дать совсем другую последовательность или вообще вызвать ошибку, ссылаясь на отсутствующий столбец [22]. В качестве элемента сортировки в ORDER BY разрешено также определять выражения. Например, для вывода информации о первых пяти абонентах, имеющих наиболее длинные ФИО, можно использовать следующий запрос: SELECT FIRST 5 * FROM Abonent ORDER BY CHAR LENGTH(Fio) DESC;. Результат выполнения запроса представлен на рис. 3.52.
Рис. 3.52. Результат выполнения запроса с сортировкой по выражению Функция CHARLENGTH, использованная в данном запросе, возвращает длину поля Fio в символах. В результате выведены данные о 5 абонентах, имеющих наиболее длинное значение поля Fio. В соответствии с SQL-стандартом существует возможность определить положение NULL-значений в ТРЗ. Результаты могут быть отсортированы таким образом, что NULL будут располагаться выше (NULLS FIRST) или ниже (NULLS LAST) остальных результатов запроса, отличных от NULL. По умолчанию используется NULLS LAST. Примечание. Если задано NULLS FIRST, то для сортировки не может быть использован индекс (использование индексов будет описано далее). Например, для вывода номеров и дат выполнения ремонтных заявок, поданных абонентами, номера лицевых счетов которых начинаются с 08 или с 11, отсортированных по убыванию дат выполнения с NULL-значениями вначале можно использовать следующий запрос; SELECT RequestCd, ExecutionDate, AccountCd FROM REQUEST WHERE (AccountCD LIKE 08%) OR (AccountCD LIKE 11%) ORDER BY ExecutionDate DESC NULLS FIRST;. Результат выполнения запроса представлен на рис. 3.53.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |