Order by опис. Робота із базою даних. Сортування даних в результаті запиту SQL. Порядок команди ORDER BY у запиті

Нерідко виникає необхідність вивести результат запиту у певному порядку, наприклад, за абеткою. Для цього в СУБД існує спеціальна функціяна мові SQL- Сортування. При цьому програміст може вибрати, за якими полями і в якому порядку вона відбуватиметься, щоб досягти бажаного результату, не застосовуючи серйозних навичок програмування.

Що таке сортування у базі даних?

p align="justify"> Робота з базами даних постійно пов'язана з великим обсягом інформації, якої необхідно визначати порядок. В даний час існує ціла низка СУБД, що має широкий спектр функцій, найпопулярнішими з яких є Oracle і MS SQL. Сортування інформації як одна з головних процедур у роботі з БД забезпечується спеціальною вбудованою функцією в кожній з них.

Ранжування даних дозволяє спростити процес пошуку, а також у деяких випадках допомагає вирішити деякі завдання або оптимізувати роботу програми. SQL-сортировка проводиться за окремо обраним полем, а за необхідності, у разі наявності однакових значень в елементах цього поля, можна вказати Додаткові параметри, Що визначають розташування рядків.

Команда сортування

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

Наприклад, якщо з таблиці People необхідно отримати дані з полів Name і Age, при цьому вивівши результат в алфавітному порядку по стовпцю Name, це допоможе зробити наступний запит: SELECT Name, Age FROM People ORDER BY Name.

Як встановити порядок сортування?

Сучасні умови ставлять перед програмістами різні завдання, і часом необхідно визначити, в якому порядку буде виведено результат - за спаданням або зростанням, за алфавітом або в зворотному порядку? І для цього на мові SQL порядок сортування визначається додаванням ключового слова до запиту. Після вибору полів та таблиць, з яких буде отримана бажана інформація, необхідно додати ORDER BY, після чого вказати ім'я стовпця, за яким необхідно зробити сортування.

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

Альтернативні методи сортування

У разі відсутності можливості використання вбудованої функції SQL-сортування, можна написати один із відомих алгоритмів. При необхідності досягнення найшвидшого впорядкування елементів, варто застосувати метод, заснований на половинному розбиванні масиву елементів. Великою популярністю також володіють способи ранжування "бульбашкою", в якому два сусідні елементи змінюються місцями у разі неправильного розташування, "пірамідальне сортування", що відправляє найбільший елемент в кінець списку, а також "сортування вставками", що зумовлює розташування кожного елемента по черзі.

Власне ручне написання алгоритму не дозволить суттєво збільшити швидкість сортування, проте, сприятиме розвитку навичок програмування, а також дозволить модифікувати процес, підлаштувавши схему ранжирування під певну базу даних для підвищення ефективності роботи програми.

При вибірці даних буває важливо отримати їх у певному упорядкованому вигляді. Сортування може бути виконане за будь-якими полями з будь-яким типом даних. Це може бути сортування за зростанням або спаданням для числових полів. Для символьних (текстових) полів це може бути сортування в алфавітному порядку, хоча по суті воно так само є сортуванням за зростанням або зменшенням. Вона так само може бути виконана в будь-яких напрямках – від А до Я, і навпаки від Я до А.

Суть процесу сортування полягає у приведенні послідовності до певного порядку. Докладніше про сортування можна дізнатися у статті "Алгоритми сортування" Наприклад, сортування довільної числової послідовності за зростанням:

2, 4, 1, 5, 9

має призвести до впорядкованої послідовності:

1, 2, 4, 5, 6

Аналогічно, при сортуванні за зростанням рядкових значень:

Іванов Іван, Петров Петро, ​​Іванов Андрій

результат має бути:

Іванов Андрій, Іванов Іван, Петров Петро

Тут рядок "Іванов Андрій" перейшов у початок, оскільки порівняння рядків проводиться посимвольно. Обидва рядки починаються з однакових символів "Іванів". Оскільки символ "А" у слові "Андрій" йде раніше в алфавіті, ніж символ "І" у слові "Іван", то цей рядок буде поставлено раніше.

Сортування у запиті SQL

Для сортування в рядок запиту потрібно додати команду ORDER BY. Після цієї команди вказується поле, яким проводиться сортування.

Для прикладів використовуємо таблицю товарів goods:

num
(номер товару)
title
(назва)
price
(ціна)
1 Мандарин50
2 Кавун120
3 Ананас80
4 Банан40

Дані тут уже впорядковані стовпцем "num". Тепер збудуємо запит, який виведе таблицю з товарами, впорядкованими в алфавітному порядку:

SELECT * FROM goods ORDER BY title

SELECT * FROM goods – вказує вибрати всі поля з таблиці goods;

ORDER BY – команда сортування;

title – стовпець, яким буде виконуватися сортування.

Результат виконання такого запиту наступний:

num title price
3 Ананас80
2 Кавун120
4 Банан40
1 Мандарин50

Також можна виконати сортування для будь-якого з полів таблиці.

Напрямок сортування

За замовчуванням команда ORDER BY сортує за зростанням. Щоб керувати напрямом сортування вручну, після імені стовпця вказується ключове слово ASC (за зростанням) або DESC (за спаданням). Таким чином, щоб вивести нашу таблицю в порядку зменшення цін, потрібно задати запит так:

SELECT * FROM goods ORDER BY price DESC

Сортування за зростанням ціни буде:

SELECT * FROM goods ORDER BY price ASC

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

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

column1 column2 column3
3 1 c
1 3 c
2 2 b
2 1 b
1 2 a
1 3 a
3 4 a

Відсортуємо таблицю за такими правилами:

SELECT * FROM mytable ORDER BY column1 ASC, column2 DESC, column3 ASC

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

column1 column2 column3
1 3 a
1 3 c
1 2 a
2 2 b
2 1 b
3 1 a
3 1 c

Порядок команди ORDER BY у запиті

Сортування рядків найчастіше проводиться разом із умовою вибірку даних. Команда ORDER BY ставиться після умови вибірки WHERE. Наприклад, вибираємо товари з ціною менше 100 рублів, упорядкувавши за назвою в алфавітному порядку:

SELECT * FROM goods WHERE price 100 ORDER BY price ASC

Пропозиція ORDER BY в Access сортує записи, повернені запитом, за зростанням або зменшенням значень вказаного поля (полів).

Синтаксис

SELECT список_полів
FROM таблиця
WHERE умова_відбору
[, поле2 ][, ...]]]

Інструкція SELECT, що містить пропозицію ORDER BY, включає наступні елементи:

Зауваження

Пропозиція ORDER BY не є обов'язковою. Його слід використовувати, коли необхідно відобразити дані у відсортованому вигляді.

За умовчанням застосовується порядок сортування за зростанням (від А до Я, від 0 до 9). У двох наведених нижче прикладах показано сортування імен співробітників на прізвища.

SELECT LastName, FirstName
FROM Employees
ORDER BY LastName;
SELECT LastName, FirstName
FROM Employees
ORDER BY LastName ASC;

Щоб виконати сортування за спаданням (від Я до А, від 9 до 0), додайте зарезервоване слово DESC наприкінці кожного поля, яким ви хочете відсортувати записи. У прикладі нижче виконується сортування прізвищ співробітників у порядку зменшення заробітної плати.

SELECT LastName, Salary
FROM Employees
ORDER BY Salary DESC, LastName;

Якщо в пропозиції ORDER BY вказати поле, яке містить дані типу Memo або об'єкти OLE, Виникне помилка. Ядро СУБД Microsoft Access не підтримує сортування поля цих типів.

Пропозиція ORDER BY зазвичай є останнім елементом в інструкції SQL.

У пропозицію ORDER BY можна містити додаткові поля. Спочатку записи сортуються за полем, зазначеним у пропозиції ORDER BY першим. Потім для записів з однаковими значеннями першого поля виконується сортування полем, зазначеним другим, і т.д.


Наступний цикл:

Крок 8. Просте сортування

Якщо результат вашого SQL запиту має стати вихідним матеріалом якогось звіту, то питання сортування в ньому даних стає надзвичайно важливим, оскільки людині, яка читає невідсортований належним чином звіт, дуже складно швидко знайти в ньому потрібну саме йому частину інформації. Для сортування даних по колонках результату запиту (у разі - по полях таблиці) в SQL використовується ключове слово ORDER BY. Приклад найпростішого сортування наведено нижче. За основу взято запит з кроку 2: "Запит із простим критерієм відбору". Сортуємо співробітників по полю S_NAME (П.І.Б.).

SELECT S_NAME, S_EXPERIENCE FROM D_STAFF WHERE S_EXPERIENCE

Сортування результату запиту SQL по одному полю.

Крок 9. Складне сортування

Часто і навіть практично завжди необхідно відсортувати дані більш ніж по одній колонці та не завжди в порядку зростання. Синтаксис SQL передбачає після ключового слова ORDER BY список колонок, розділених комою, і навіть, спосіб сортування кожної колонки: у порядку зростання значень - ASC чи порядку їх спадання - DESC. У наведеному нижче прикладі ми показуємо записи вже про всіх співробітників у порядку зменшення їх стажу. Співробітників з однаковим стажем сортуємо за абеткою.

SELECT S_EXPERIENCE, S_NAME від D_STAFF ORDER BY S_EXPERIENCE DESC, S_NAME ASC


Сортування результату SQL запиту за двома полями.

Досить часто зворотний порядок сортування використовують із колонками типу [дата]. Якщо дата зберігає, наприклад, дату занесення інформації, то при зворотному сортуванні на самому початку списку виявляються записи, які були додані недавно щодо інших. У разі якщо запит витягує з бази даних анонси новин, то ми отримуємо список анонсів, відсортованих у порядку зменшення їх актуальності, що може бути вкрай корисним, оскільки читають анонси зазвичай зверху вниз, та й на сайтах новин показують їх не всі, а лише кілька найбільш "свіжих".




Top