Naroči po opisu. Delo z bazo podatkov. Razvrščanje podatkov kot rezultat poizvedbe SQL. Vrstni red ukaza ORDER BY v poizvedbi

Pogosto je treba prikazati rezultat poizvedbe v določenem vrstnem redu, na primer po abecedi. Za to ima DBMS posebna funkcija na jezik SQL- sortiranje. Hkrati lahko programer izbere, katera polja in v kakšnem vrstnem redu se bodo pojavila, da bi dosegel želeni rezultat brez uporabe resnih veščin programiranja.

Kaj je razvrščanje v bazi podatkov?

Delo z bazami podatkov je nenehno povezano z veliko količino informacij, ki jih je treba naročiti. Trenutno obstaja več DBMS, ki imajo širok nabor funkcij, med katerimi sta najbolj priljubljena Oracle in MS SQL. Razvrščanje informacij kot enega glavnih postopkov pri delu z bazo podatkov zagotavlja posebna vgrajena funkcija v vsako od njih.

Podatki o rangiranju vam omogočajo poenostavitev postopka iskanja in v nekaterih primerih pomagajo rešiti nekatere težave ali optimizirati program. Razvrščanje SQL se izvaja z ločeno izbranim poljem in če je potrebno, če so v elementih tega polja enake vrednosti, lahko določite Dodatne možnosti, ki določa razporeditev vrstic.

Ukaz za razvrščanje

Razvrščanje SQL v podatkovni zbirki je zagotovljeno s funkcijo ORDER BY. Torej, pri prikazu informacij iz baze podatkov je treba po določitvi stolpcev in tabel, iz katerih bo opravljeno branje, v poizvedbi določiti ukaz za razvrščanje in nato določiti polje ali polja, po katerih se bo razvrstilo.

Na primer, če morate pridobiti podatke iz polj Ime in Starost iz tabele Ljudje, medtem ko rezultat prikažete po abecednem vrstnem redu po stolpcu Ime, vam bo pomagala naslednja poizvedba: IZBERI Ime, Starost IZ Oseb, RAZVRSTI PO IMENU.

Kako nastaviti vrstni red?

Sodobne razmere programerjem postavljajo različne naloge in včasih je treba vnaprej določiti, v kakšnem vrstnem redu bo rezultat prikazan - v padajočem ali naraščajočem vrstnem redu, po abecedi ali v obratnem vrstnem redu? In za to se v SQL vrstni red določi z dodajanjem ključne besede v poizvedbo. Po izbiri polj in tabel, iz katerih bodo pridobljeni želeni podatki, morate dodati ORDER BY, nato pa določiti ime stolpca, po katerem želite sortirati.

Če želite dobiti obratni vrstni red, morate za imenom podati parameter DESC. Če je potrebno elemente razvrstiti po dveh ali več kriterijih, so stolpci ločeni z vejicami, prednost pri razvrščanju pa ima polje, ki je prvo na seznamu. Omeniti velja, da vrstni red elementov v obratnem vrstnem redu parameter DESC zagotavlja samo eno polje, za imenom katerega je navedena ta ključna beseda, zato jo je treba po potrebi določiti v vseh izbranih stolpcih.

Alternativne metode razvrščanja

Če ni mogoče uporabiti vgrajene funkcije za razvrščanje SQL, lahko napišete enega od znanih algoritmov. Če je treba doseči najhitrejše razporejanje elementov, je vredno uporabiti metodo, ki temelji na polovičnem razbijanju niza elementov. Zelo priljubljene so tudi »bubble« metode rangiranja, pri katerih se v primeru nepravilnega položaja zamenjata sosednja elementa, »heap sort«, ki največji element pošlje na konec seznama, in »insert sort«, ki vnaprej določi lokacijo vsakega elementa po vrsti.

Samostojno pisanje algoritma ne bo bistveno povečalo hitrosti razvrščanja, vendar bo prispevalo k razvoju programskih veščin in vam bo omogočilo tudi spreminjanje procesa s prilagajanjem sheme razvrščanja za določeno bazo podatkov za povečanje učinkovitosti programa.

Pri pridobivanju podatkov je pomembno, da jih pridobite v določenem vrstnem redu. Razvrščanje je mogoče izvesti v katerem koli polju s katero koli vrsto podatkov. To je mogoče razvrstiti v naraščajočem ali padajočem vrstnem redu za številska polja. Za znakovna (besedilna) polja je to mogoče razvrstiti po abecednem vrstnem redu, čeprav gre dejansko tudi za razvrščanje po naraščajočem ali padajočem vrstnem redu. Lahko se izvaja tudi v kateri koli smeri - od A do Ž in obratno od Ž do A.

Bistvo postopka razvrščanja je pripeljati zaporedje v določen vrstni red. Več o razvrščanju lahko izveste v članku "Algoritmi za razvrščanje" Na primer, razvrščanje poljubnega številskega zaporedja v naraščajočem vrstnem redu:

2, 4, 1, 5, 9

rezultat bi moral biti urejeno zaporedje:

1, 2, 4, 5, 6

Podobno pri razvrščanju v naraščajočem vrstnem redu vrednosti niza:

Ivanov Ivan, Petrov Petr, Ivanov Andrej

rezultat bi moral biti:

Ivanov Andrej, Ivanov Ivan, Petrov Petr

Tu se je niz "Ivanov Andrey" premaknil na začetek, saj se primerjava nizov izvaja znak za znakom. Obe vrstici se začneta z istimi znaki " Ivanov ". Ker je znak "A" v besedi "Andrey" prej v abecedi kot znak "I" v besedi "Ivan", bo ta vrstica postavljena prej.

Razvrščanje v poizvedbi SQL

Če želite izvesti razvrščanje, morate nizu poizvedbe dodati ukaz ORDER BY. Za tem ukazom je označeno polje, po katerem se izvaja sortiranje.

Na primer, uporabljamo tabelo blaga:

št
(Številka artikla)
naslov
(ime)
cena
(cena)
1 Mandarin50
2 Lubenica120
3 Ananas80
4 Banana40

Podatki tukaj so že razvrščeni po stolpcu "num". Zdaj pa sestavimo poizvedbo, ki bo prikazala tabelo z izdelki, razvrščenimi po abecedi:

IZBERI * IZ BLAGA VRSTI PO NAZIVU

SELECT * FROM blago - določa izbiro vseh polj iz tabele blaga;

ORDER BY - ukaz za razvrščanje;

naslov je stolpec za razvrščanje.

Rezultat takšne poizvedbe je naslednji:

št naslov cena
3 Ananas80
2 Lubenica120
4 Banana40
1 Mandarin50

Razvrstite lahko tudi za katero koli polje v tabeli.

Smer razvrščanja

Privzeto ukaz ORDER BY razvršča v naraščajočem vrstnem redu. Za ročni nadzor smeri razvrščanja imenu stolpca sledi ključna beseda ASC (naraščajoče) ali DESC (padajoče). Če želimo torej prikazati našo tabelo v padajočem vrstnem redu cen, moramo postaviti poizvedbo takole:

IZBERI * IZ BLAGA RAZVRSTI PO CENI DESC

Razvrščanje v naraščajočem vrstnem redu bi bilo:

IZBERI * IZ BLAGA VRSTI PO ceni VZP

Razvrščanje po več poljih

SQL omogoča razvrščanje po več poljih hkrati. Da bi to naredili, so za ukazom ORDER BY zahtevana polja podana ločena z vejicami. Vrstni red v rezultatih poizvedbe bo konfiguriran v istem vrstnem redu, kot so podana polja za razvrščanje.

stolpec1 stolpec2 stolpec3
3 1 c
1 3 c
2 2 b
2 1 b
1 2 a
1 3 a
3 4 a

Razvrstite tabelo po naslednjih pravilih:

IZBERI * IZ mytable ORDER BY stolpec1 ASC, stolpec2 DESC, stolpec3 ASC

Tisti. prvi stolpec naraščajoče, drugi padajoči, tretji spet naraščajoči. Poizvedba bo razvrstila vrstice po prvem stolpcu, nato pa po drugem stolpcu, ne da bi uničila prvo pravilo. Nato na enak način, ne da bi kršili obstoječa pravila, v skladu s tretjim. Rezultat je nabor podatkov, kot je ta:

stolpec1 stolpec2 stolpec3
1 3 a
1 3 c
1 2 a
2 2 b
2 1 b
3 1 a
3 1 c

Vrstni red ukaza ORDER BY v poizvedbi

Razvrščanje vrstic se najpogosteje izvaja skupaj s pogojem izbire podatkov. Ukaz ORDER BY je postavljen za izbirno klavzulo WHERE. Na primer, izberemo izdelke s ceno, nižjo od 100 rubljev, in jih razvrstimo po imenu po abecednem vrstnem redu:

IZBERI * OD blaga KJE cena 100 VRSTNI RED PO ceni ASC

Klavzula ORDER BY v Accessu razvrsti zapise, ki jih vrne poizvedba, v naraščajočem ali padajočem vrstnem redu glede na vrednosti podanih polj.

Sintaksa

IZBERI seznam_polj
OD tabela
KJE izbirni_pogoj
[, polje2 ][, ...]]]

Stavek SELECT, ki vsebuje klavzulo ORDER BY, vključuje naslednje elemente:

Opombe

Klavzula ORDER BY ni obvezna. Uporabite ga, ko morate podatke prikazati v razvrščeni obliki.

Privzeti vrstni red je naraščajoč (od A do Ž, od 0 do 9). Spodnja dva primera prikazujeta razvrščanje imen zaposlenih po priimkih.

IZBERI Priimek, Ime
OD zaposlenih
UREDI PO PRIIMKU;
IZBERI Priimek, Ime
OD zaposlenih
ORDER BY Priimek ASC;

Za razvrščanje v padajočem vrstnem redu (Z do A, 9 do 0) dodajte rezervirano besedo DESC na koncu vsakega polja, po katerem želite razvrstiti zapise. Spodnji primer razvršča priimke zaposlenih po padajočem vrstnem redu glede na plačo.

IZBERI Priimek, Plača
OD zaposlenih
ORDER BY Plača DESC, Priimek;

Če v klavzuli ORDER BY določite polje, ki vsebuje podatke tipa Memo oz objektov OLE, bo prišlo do napake. Jedro DBMS Microsoft Access ne podpira razvrščanja v teh vrstah polj.

Klavzula ORDER BY je običajno zadnji element v stavku SQL.

Dodatna polja so lahko vključena v klavzulo ORDER BY. Zapisi so najprej razvrščeni glede na prvo navedeno polje v klavzuli ORDER BY. Zapisi z enako vrednostjo v prvem polju so nato razvrščeni po polju, določenem v drugem polju, in tako naprej.


Naslednja zanka:

8. korak: Enostavno razvrščanje

Če naj bi rezultat vaše poizvedbe SQL postal izvorni material določenega poročila, postane vprašanje razvrščanja podatkov v njem izjemno pomembno, saj oseba, ki bere poročilo, ki ni pravilno razvrščeno, zelo težko hitro najde del informacij, ki jih potrebuje v njem. Za razvrščanje podatkov po stolpcih rezultata poizvedbe (v našem primeru po poljih tabele) SQL uporablja ključno besedo ORDER BY. Spodaj je podan primer najpreprostejšega razvrščanja. Na podlagi poizvedbe iz 2. koraka: “Poizvedba s preprostim izbirnim kriterijem”. Zaposlene razvrščamo po polju S_NAME (polno ime).

IZBERI S_NAME, S_IZKUŠNJA OD D_STAFF, KJE S_IZKUŠNJA

Razvrščanje rezultatov poizvedbe SQL po enem polju.

Korak 9. Kompleksno razvrščanje

Pogosto in skoraj vedno je treba podatke razvrstiti po več kot enem stolpcu in ne vedno v naraščajočem vrstnem redu. Sintaksa SQL predpostavlja po ključni besedi ORDER BY seznam stolpcev, ločenih z vejicami, kot tudi način razvrščanja za vsak stolpec: v naraščajočem vrstnem redu vrednosti - ASC ali padajočem vrstnem redu - DESC. V spodnjem primeru prikazujemo evidence za vse zaposlene v padajočem vrstnem redu po delovni dobi. Zaposleni z enako delovno dobo so razvrščeni po abecedi.

IZBERI S_IZKUŠNJO, S_NAME IZ D_OSEBJA VRSTI PO S_IZKUŠNJI DESC, S_NAME ASC


Razvrščanje rezultatov poizvedbe SQL po dveh poljih.

Precej pogosto se obraten vrstni red uporablja za stolpce [datum]. Če datum shrani na primer datum vnosa informacij, potem so pri razvrščanju nazaj na samem začetku seznama tisti vnosi, ki so bili nedavno dodani glede na ostale. Če poizvedba pridobi obvestila o novicah iz baze, potem dobimo seznam obvestil, razvrščenih po padajočem vrstnem redu glede na njihovo relevantnost, kar je lahko izjemno koristno, saj se obvestila običajno berejo od zgoraj navzdol in na novicah niso prikazana vsa. strani, a le nekaj najbolj »svežih«.




Vrh