Нарачајте по опис. Работа со базата на податоци. Подредување податоци како резултат на SQL барање. Редослед на наредбата ORDER BY во барањето

Честопати има потреба да се прикаже резултатот од барањето по одреден редослед, на пример, по азбучен ред. За ова, DBMS има посебна функцијана SQL јазик- сортирање. Во исто време, програмерот може да избере кои полиња и по кој редослед ќе се појават за да го постигне посакуваниот резултат без да користи сериозни програмски вештини.

Што е сортирање во базата на податоци?

Работата со бази на податоци е постојано поврзана со голема количина на информации што треба да се нарачаат. Во моментов, постојат голем број на DBMS кои имаат широк опсег на функции, од кои најпопуларни се Oracle и MS SQL. Подредувањето на информациите, како една од главните процедури при работа со базата, е обезбедено со посебна вградена функција во секоја од нив.

Рангирањето на податоците ви овозможува да го поедноставите процесот на пребарување, а во некои случаи помага да се решат некои проблеми или да се оптимизира програмата. Сортирањето SQL се врши со посебно избрано поле, а доколку е потребно, доколку има идентични вредности во елементите на ова поле, можете да наведете Дополнителни опции, дефинирајќи го распоредот на редовите.

Команда за сортирање

Сортирањето SQL во базата на податоци е обезбедено со користење на функцијата ORDER BY. Значи, при прикажување на информации од базата на податоци, откако ќе се наведат колоните и табелите од кои ќе се врши читањето, потребно е во барањето да се наведе наредбата сортирање, а потоа да се определи полето или полињата по кои ќе се врши сортирањето.

На пример, ако треба да добиете податоци од полињата Име и Возраст од табелата Луѓе, притоа прикажувајќи го резултатот по азбучен редослед по колоната Име, тогаш следното барање ќе ви помогне: ИЗБЕРЕТЕ ИМЕ, Возраст ОД луѓе НАРАЧАЈ ПО ИМЕ.

Како да поставите редослед на сортирање?

Современите услови поставуваат различни задачи за програмерите, а понекогаш е неопходно однапред да се одреди по кој редослед ќе се прикаже резултатот - по опаѓачки или растечки редослед, по азбучен ред или во обратен редослед? И за ова, во SQL, редоследот на сортирање се одредува со додавање на клучен збор на барањето. Откако ќе ги изберете полињата и табелите од кои ќе се добијат саканите информации, мора да додадете ORDER BY, а потоа да го наведете името на колоната по која сакате да подредите.

За да го добиете обратниот редослед, мора да го наведете параметарот DESC по името. Доколку е потребно да се подредат елементите според два или повеќе критериуми, тогаш колоните се одвојуваат со запирки, а приоритет за рангирање ќе се даде на полето кое е прво во листата. Вреди да се напомене дека подредувањето на елементите во обратен редослед, параметарот DESC предвидува само едно поле, по чие име е означен овој клучен збор, затоа, доколку е потребно, мора да биде наведен во сите избрани колони.

Алтернативни методи за сортирање

Ако не е можно да се користи вградената функција за сортирање SQL, може да се напише еден од добро познатите алгоритми. Доколку е неопходно да се постигне најбрзо подредување на елементите, вреди да се користи метод заснован на полу-кршење низа елементи. Исто така, многу популарни се методите за рангирање со „балон“, во кои два соседни елементи се заменуваат во случај на погрешна позиција, „натрупа сортирање“, што го испраќа најголемиот елемент до крајот на листата и „вметни сортирање“, што го предодредува локација на секој елемент по ред.

Самописното пишување на алгоритмот нема значително да ја зголеми брзината на сортирање, сепак, ќе придонесе за развој на програмски вештини, а исто така ќе ви овозможи да го измените процесот со прилагодување на шемата за рангирање за одредена база на податоци за да ја зголемите ефикасноста на програмата.

При преземањето податоци, важно е да се добијат по одреден редослед. Сортирањето може да се врши на кое било поле со кој било тип на податоци. Ова може да се подреди по растечки или опаѓачки редослед за нумеричките полиња. За полињата со знаци (текст), ова може да се подреди по азбучен ред, иако всушност исто така е подредување по растечки или опаѓачки редослед. Може да се изведува и во која било насока - од А до Ш, и обратно од Ш до А.

Суштината на процесот на сортирање е да се доведе низата до одреден редослед. Можете да дознаете повеќе за сортирањето во написот „Алгоритми за подредување“ На пример, подредување произволна нумеричка низа во растечки редослед:

2, 4, 1, 5, 9

треба да резултира со подредена низа:

1, 2, 4, 5, 6

Слично на тоа, при подредување по растечки редослед на вредностите на низата:

Иванов Иван, Петров Петр, Иванов Андреј

резултатот треба да биде:

Иванов Андреј, Иванов Иван, Петров Петр

Овде стрингот „Иванов Андреј“ се пресели на почеток, бидејќи споредувањето на жиците се изведува карактер по знак. Двата реда започнуваат со истите ликови „Иванов“. Бидејќи знакот „А“ во зборот „Андреј“ доаѓа порано во азбуката од знакот „Јас“ во зборот „Иван“, оваа линија ќе биде поставена порано.

Сортирање во SQL Query

За да извршите сортирање, треба да ја додадете командата ORDER BY во низата за барање. По оваа команда се означува полето со кое се врши сортирањето.

На пример, ја користиме табелата за стоки:

број
(Точка број)
Наслов
(име)
цена
(цена)
1 мандарински50
2 Лубеница120
3 Ананас80
4 Банана40

Податоците овде веќе се подредени по колоната „num“. Сега, ајде да изградиме барање што ќе прикаже табела со производи подредени по азбучен ред:

ИЗБЕРИ * ОД роба ПОРАЧАЈТЕ ПО назив

SELECT * FROM goods - одредува да се изберат сите полиња од табелата за стоки;

ORDER BY - команда за сортирање;

насловот е колоната по која треба да се сортира.

Резултатот од таквото барање е следниов:

број Наслов цена
3 Ананас80
2 Лубеница120
4 Банана40
1 мандарински50

Можете исто така да сортирате за кое било од полињата во табелата.

Насока на сортирање

Стандардно, командата ORDER BY се подредува во растечки редослед. За рачно контролирање на насоката на сортирање, името на колоната е проследено со клучниот збор ASC (растечки) или DESC (опаѓачки). Така, за да ја прикажеме нашата табела по опаѓачки редослед на цени, треба да го поставиме барањето вака:

ИЗБЕРИ * ОД роба ПОРАЧАЈ ПО ЦЕНА ОПЕК

Подредувањето по растечки редослед би било:

ИЗБЕРИ * ОД роба ПОРАЧАЈТЕ ПО цена ASC

Подредување по повеќе полиња

SQL овозможува сортирање по повеќе полиња одеднаш. За да го направите ова, по командата ORDER BY, потребните полиња се назначени одделени со запирки. Редоследот во резултатот од барањето ќе биде конфигуриран по истиот редослед по кој се наведени полињата за сортирање.

колона 1 колона2 колона3
3 1 в
1 3 в
2 2 б
2 1 б
1 2 а
1 3 а
3 4 а

Подредете ја табелата според следниве правила:

ИЗБЕРИ * ОД mytable РЕД ПО колона 1 ASC, колона 2 DESC, колона3 ASC

Оние. првата колона расте, втората опаѓачка, третата повторно расте. Барањето ќе ги подреди редовите по првата колона, а потоа, без да го уништи првото правило, по втората колона. Потоа, на ист начин, без прекршување на постоечките правила, според третото. Резултатот е вака на база на податоци:

колона 1 колона2 колона3
1 3 а
1 3 в
1 2 а
2 2 б
2 1 б
3 1 а
3 1 в

Редослед на наредбата ORDER BY во барањето

Сортирањето на редови најчесто се врши заедно со услов за избор на податоци. Командата ORDER BY се става по клаузулата за избор WHERE. На пример, избираме производи со цена помала од 100 рубли, сортирање по име по азбучен редослед:

ИЗБЕРИ * ОД роба КАДЕ цена 100ПОРАЧАЈ ПО цена ASC

Клаузулата ORDER BY во Access ги подредува записите вратени со барање во растечки или опаѓачки редослед според вредностите на наведените полиња.

Синтакса

ИЗБЕРИ поле_листа
ОД маса
КАДЕ избор_состојба
[, поле 2 ][, ...]]]

Изјавата SELECT што ја содржи клаузулата ORDER BY ги вклучува следните елементи:

Забелешки

Клаузулата ORDER BY е изборна. Треба да се користи кога треба да се прикажат податоците во сортирана форма.

Стандардниот редослед на сортирање е растечки (А до Ш, од 0 до 9). Двата примери подолу покажуваат сортирање на имињата на вработените по презиме.

ИЗБЕРЕТЕ Презиме, Име
ОД Вработените
НАРАЧКА ПО ПРЕЗИМЕ;
ИЗБЕРЕТЕ Презиме, Име
ОД Вработените
НАРАЧКА ПО Презиме ASC;

За подредување по опаѓачки редослед (Z до A, 9 до 0), додадете го резервираниот збор DESC на крајот од секое поле по кое сакате да ги сортирате записите. Примерот подолу ги сортира презимињата на вработените по опаѓачки редослед на платата.

ИЗБЕРЕТЕ презиме, плата
ОД Вработените
ПОРАЧАЈ СПОРЕД плата ОПИС, Презиме;

Ако наведете поле во клаузулата ORDER BY што содржи податоци од типот Мемо или OLE објекти, ќе се појави грешка. Јадро DBMS МајкрософтПристапот не поддржува сортирање на овие типови полиња.

Клаузулата ORDER BY е обично последниот елемент во изјавата SQL.

Дополнителни полиња може да се вклучат во клаузулата ORDER BY. Записите прво се подредуваат според полето наведено прво во клаузулата РЕД ПО . Записите со иста вредност во првото поле потоа се подредуваат според полето наведено во второто поле итн.


Следна јамка:

Чекор 8: Едноставно сортирање

Ако резултатот од вашето пребарување SQL треба да стане изворен материјал на одреден извештај, тогаш прашањето за сортирање на податоците во него станува исклучително важно, бидејќи е многу тешко за лицето кое чита извештај што не е правилно сортиран брзо да го пронајде дел од информациите што му се потребни во неа. За да ги подреди податоците по колоните на резултатот од барањето (во нашиот случај, според полињата на табелата), SQL го користи клучниот збор РЕД ПО . Пример за наједноставно сортирање е даден подолу. Врз основа на барањето од чекор 2: „Прашање со едноставен критериум за избор“. Ги подредуваме вработените по полето S_NAME (полно име).

ИЗБЕРИ S_NAME, S_EXPERIENCE ОД D_STAFF WHERE S_EXPERIENCE

Подредување на резултатот од SQL барањето по едно поле.

Чекор 9. Комплексно сортирање

Често, и речиси секогаш, потребно е да се подредат податоците по повеќе од една колона, а не секогаш во растечки редослед. Синтаксата SQL претпоставува, по клучниот збор ORDER BY, листа на колони одделени со запирки, како и метод за сортирање за секоја колона: во растечки редослед на вредности - ASC или опаѓачки редослед - DESC. Во примерот подолу, прикажуваме евиденција за сите вработени по опаѓачки редослед на стаж. Вработените со ист стаж се подредени по азбучен ред.

ИЗБЕРИ S_EXPERIENCE, S_NAME ОД D_STAFF НАРАЧАЈ СО S_EXPERIENCE DESC, S_NAME ASC


Подредување на резултатот од SQL барањето по две полиња.

Доста често се користи обратен редослед на сортирање со [датум] колони. Ако датумот го зачувува, на пример, датумот кога се внесени информациите, тогаш при сортирање назад, на самиот почеток на списокот се оние записи што неодамна беа додадени во однос на останатите. Ако барањето ги повлекува објавите за вести од базата на податоци, тогаш добиваме листа на објави подредени по опаѓачки редослед по нивната релевантност, што може да биде исклучително корисно, бидејќи објавите обично се читаат од горе до долу, а не сите се прикажуваат на вестите. сајтови, но само неколку „најсвежи“.




Врв