русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Сортування результатів запиту


Дата добавления: 2015-07-09; просмотров: 644; Нарушение авторских прав


Більшість БД, що працюють із SQL, надають спеціальні засоби, що дозволяють удосконалювати вивід запитів.

Припустимо, що є необхідність виконати прості числові обчислення з даними, виведеними як результат запиту. SQL дозволяє поміщати вирази й константи серед обраних полів. Ці вирази можуть доповнювати або заміщати поля в конструкціях SELECT, при цьому вони можуть містити в собі одне або більше обраних полів. Наприклад, якщо необхідно переглянути проіндексовану стипендію, збільшивши її у два рази, то можна скористатися запитом:

SELECT SFAM, SIMA, SOTCH, STIP*2

FROM STUDENTS;

Вивід результату цього запиту буде таким:

SFAM SIMA. SOTCH

------------------------------------------------------------------------------------

Поляков Анатолій Олексійович 51.00

Старова Любов Михайлівна 34.00

Гриценко Володимир Миколайович 0.00

Котенко Анатолій Миколайович 0.00

Нагорний Євген Васильович 51.00

 

Зверніть увагу на те, що останній стовпець без найменування, тому що це - стовпець висновку, тобто це - стовпці даних, створені запитом способом, іншим, ніж простий відбір даних з таблиці. Такі стовпці створюються щораз, коли використовуються функції, константи або вирази в конструкції SELECT запиту. Так як ім'я стовпця - один з атрибутів таблиці, стовпці які з'являються не з таблиць, не мають ніяких імен.

Досить часто виникає необхідність у розміщенні тексту у виводі запиту. Наприклад, для підвищення зручності роботи з результатами попереднього запиту, можна вставити скорочену назву одиниці виміру проіндексованої стипендії - умовних одиниць, що виконується наступним запитом:

SELECT SFAM, SIMA, SOTCH, 'у.е.', STIP*2

FROM STUDENTS;

Вивід цього запиту буде наступний:

 

SFAM SIMA. SOTCH

-------------------------------------------------------------------------------------



Поляков Анатолій Олексійович у.е. 51.00

Старова Любов Михайлівна у.е. 34.00

Гриценко Володимир Миколайович у.е. 0.00

Котенко Анатолій Миколайович у.е. 0.00

Нагорний Євген Васильович у.е. 51.00

 

Варто мати на увазі, що всі символи, у т.ч. пробіли, у рядку тексту також входять у вивід, тому запропонований спосіб можна використати для маркірування виводу разом із коментарями. Однак необхідно пам'ятати, що цей же самий коментар буде надрукований у кожному рядку висновку, а не просто один раз для всієї таблиці. Припустимо, що необхідно звіт про кількість студентів, що одержують ту або іншу стипендію, тоді можна запропонувати наступний запит:

SELECT COUNT (DISTINCT SNUM) ,

'студ. отримують стипендію ',

STIP, ' у.е.'

FROM STUDENTS

GROUP BY STIP;

У результаті буде отримано:

STIP

------------------------------------------------------

2 студ. отримують стипендію 0.00 у.е.

1 студ. отримують стипендію 17.00 у.е.

2 студ. отримують стипендію 25.00 у.е.

Некоректність виводу тексту для стипендії 17.00 не можна уникнути, не створивши більше складної конструкції для виводу, чим запропонована. Як можна бачити, незмінний коментар для кожного рядка таблиці може бути дуже корисний, але він має ряд обмежень. Іноді корисніше вивести один коментар для всього висновку в цілому або робити свій власний коментар для кожного рядка, однак це забезпечують різні програми, що використають SQL і мають засоби генератора звітів.

Для впорядкування висновку полів таблиць SQL використовую команду ORDER BY, дозволяючи сортувати вивід запиту відповідно до значень у тій або іншій кількості обраних стовпців. Якщо вказується кілька полів, то стовпці виводу впорядковуються один усередині іншого, при цьому можна визначати зростання (ASC) або убування (DESC) для кожного стовпця. За замовчуванням установлене зростання.

Як приклад використаємо запит, що виводить таблицю з інформацією про студентів за абеткою прізвищ:

SELECT * FROM STUDENTS

ORDER BY SFAM ASC;

Результат виконання цього запиту наведений нижче:

SNUM SFAM SIMA SOTCH STIP

--------------------------------------------------------------------------------------------------------------------

3414 Гриценко Володимир Миколайович 0.00

3415 Котенко Анатолій Миколайович 0.00

3416 Нагорний Євген Васильович 25.50

3412 Поляков Анатолій Олексійович 25.50

3413 Старова Любов Михайлівна 17.00

Приведемо приклад на впорядкування інформації по декільком стовпцям. Наприклад, інформацію з таблиці з даними про студентів упорядкуємо по зменшенню розміру стипендії, а для студентів, що мають однаковий її розмір - за абеткою їхніх прізвищ. Для цього скористаємося запитом:

SELECT * FROM STUDENTS

ORDER BY STIP DESC, SFAM ASC;

Результати запиту наступні:

SNUM SFAM SIMA SOTCH STIP

---------------------------------------------------------------------------------------

3416 Нагорний Євген Васильович 25.50

3414 Поляков Анатолій Олексійович 25.50

3413 Огарьова Любов Михайлівна 17.00

3414 Гриценко Володимир Миколайович 0.00

3415 Котенко Анатолій Миколайович 0.00

Аналогічним чином допускається використання ORDER BY відразу з будь-яким числом стовпців, однак поля, по яких відбувається впорядкування, повинні бути зазначені в SELECTT. Тому запит виду:

SELECT SNUM, STIP FROM STUDENTS

ORDER BY SFAM ASC;

буде заборонений, тому що поле SFAM не було обраним полем, і GROUP BY не зміг його знайти для впорядкування висновку.

ORDER BY може використатися з GROUP BY для впорядкування груп, при цьому ORDER BY повинен бути останнім. Наприклад, виведемо вже розглянутий нами звіт про кількість студентів, що отримують ту або іншу стипендію, але по впорядкування за зменшенням розмірів їхніх стипендій:

SELECT COUNT (DISTINCT SNUM),

'студ. отримують стипендію ',

STIP, ' у.е.'

FROM STUDENTS

GROUP BY STIP

ORDER BY STIP DESC;

У результаті буде отримано:

STIP

----------------------------------------------------------------------

2 студ. отримують стипендію 25.00 у.е.

1 студ. отримують стипендію 17.00 у.е.

2 студ. отримують стипендію 0.0 у.е.

Замість імен стовпців, можна вказувати їхні порядкові номери для вказівки поля, використовуваного в упорядкуванні результату. Ці номери можуть посилатися не на порядок стовпців у таблиці, а їхній порядок у виводі. Таким чином, поле, згадане в пропозиції SELECT першим, для ORDER BY має номер 1 незалежно від того, яким по-порядку воно розміщено в таблиці. Наприклад, запит, що виводить інформацію про студентів за абеткою прізвищ, можна записати так:

SELECT SNUM, SFAM, SIMA

FROM STUDENTS

ORDER BY 2 ASC;

Вивід цього запиту наведений нижче:

SNUM SFAM SIMA

--------------------------------------------------

3414 Гриценко Володимир

3415 Котенко Анатолій

3416 Нагорний Євген

3412 Поляков Анатолій

3413 Старова Любов

Основна ціль ключового слова ORDER BY - дати можливість використати цю команду зі стовпцями висновку так само, як і зі стовпцями таблиці - адже іноді потрібно зробити впорядкування виводу по стовпцях, що конструюються агрегатною функцією, константами або виразами в конструкції SELECT запиту. Наприклад, спробуємо розглянути звіт про кількість студентів, що отримують ту або іншу стипендію, але з впорядкуванням по убуванню кількості студентів:

SELECT COUNT (DISTINCT SNUM),

'студ. отримують стипендію ',

STIP, ' у.е.'

FROM STUDENTS

GROUP BY STIP

ORDER BY 1 DESC;

У результаті буде наступний висновок:

STIP

---------------------------------------------------------

2 студ. отримують стипендію 25.00 у.е.

2 студ. отримують стипендію 0.00 у.е.

1 студ. отримують стипендію 17.00 у.е.

Отже, необхідно використати номер стовпця, тому що стовпець висновку не має імені; і не можна використати саму агрегатну функцію.

Таким чином, використовуючи команду ORDER BY можна змусити запити впорядковувати висновок даних для підвищення зручності користування ними.



<== предыдущая лекция | следующая лекция ==>
Одержання підсумкових даних | Прості запити й правила їхнього виконання


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 3.124 сек.