Sintaksis bo'yicha tartiblash. SQL da ma'lumotlarni saralash (ORDER BY). Tanlangan ma'lumotlarni saralash

Eslatma:
Joriy SQL darsligi turkumidagi barcha maqolalar oʻquv maʼlumotlar bazasiga asoslangan misollar va muammolardan foydalanadi.

Relyatsion ma'lumotlar bazalarining birinchi normal shakliga ko'ra, jadvallardagi qatorlar tartibi muhim bo'lmasligi kerak. Ammo amalda ko'pincha ma'lumotni ekranda ko'rsatishdan oldin saralash kerak bo'ladi.

ORDER BY bandi SQL so'rovida yuklangan qatorlarni tartiblash uchun javobgardir. U so'rovning eng oxirida joylashgan:

TANLASH<Перечень столбцов>FROM<Перечень таблиц>Buyurtma berish<Условие сортировки>

Saralash sharti natijaviy jadval satrlari saralanadigan ustunlarni belgilaydi:

Buyurtma BO'YICHA 1, 2-band

SQLda tartiblash tartibi

Saralashning ikkita varianti mavjud: o'sish va pasayish. So'rovda saralash turini ko'rsatish uchun ustun nomidan keyin ko'rsating kalit so'z ASC (ko'tarilish) yoki DESC (kamayish), ular mos ravishda o'sish yoki kamayish tartibini belgilaydi. Standart turi ASC:

ORDER BY BY col1 -- keyingi band ORDER BY BY col1 ACS ga ekvivalent bo'ladi

Turli ustunlar uchun boshqa tartibni belgilash ham mumkin:

Buyurtma 1 DESC, col2 ASC

Materialni birlashtirish uchun o'quv ma'lumotlar bazasidagi muammoni hal qiling:

Siz xodimlarning identifikatorlari ro'yxatini olishingiz kerak, ular guruh bo'yicha o'sish tartibida va ishga qabul qilingan sana, eng yangidan eskigacha saralangan.

Id, Guruh, Ishga qabul qilish_sanasini TANlang.

SELECT iborasining sintaksisini ORDER BY bandi bilan to'ldiramiz (vertikal chiziq variantlardan birini tanlash kerakligini bildiradi):

[Jadval nomi.]Ustun nomi[, [jadval nomi.]Ustun nomi2 ...] [[Maʼlumotlar bazasi nomi.]SxemaName.]Jadval nomi ustun nomi [, [jadval nomi.]ustun nomi2...]]

  • Oldinga >

Agar office-menu.ru saytidagi materiallar sizga yordam bergan bo'lsa, iltimos, loyihani qo'llab-quvvatlang, shunda men uni yanada rivojlantirishim mumkin.

Access-dagi ORDER BY bandi so'rov orqali qaytarilgan yozuvlarni belgilangan maydon(lar) qiymatlarining o'sishi yoki kamayishi tartibida tartiblaydi.

Sintaksis

TANLASH maydon_roʻyxati
FROM stol
QAYERDA tanlash_sharti
[, maydon 2 ][, ...]]]

SELECT bayonoti ORDER BY bandini o'z ichiga olgan quyidagi elementlarni o'z ichiga oladi:

Eslatmalar

ORDER BY bandi ixtiyoriy. Ma'lumotlarni saralangan shaklda ko'rsatish kerak bo'lganda foydalanish kerak.

Standart tartiblash tartibi ortib boruvchi (A dan Z gacha, 0 dan 9 gacha). Quyidagi ikkita misolda xodimlarning ismlarini familiyasi bo'yicha saralash ko'rsatilgan.

Familiya, Ismni tanlang
Xodimlardan
Familiya bo'yicha BUYURTMA;
Familiya, Ismni tanlang
Xodimlardan
Familiya ASC BO'YICHA BUYURTMA;

Kamayish tartibida saralash uchun (Z dan A gacha, 9 dan 0 gacha), yozuvlarni saralashni istagan har bir maydonning oxiriga ajratilgan DESC so'zini qo'shing. Quyidagi misolda xodimlarning ismlari ish haqining kamayishi tartibida tartiblangan.

Familiya, ish haqini tanlang
Xodimlardan
Buyurtma BY Ish haqi DESC, Familiya;

ORDER BY bandida Memo ma'lumotlari yoki OLE obyektlarini o'z ichiga olgan maydonni belgilasangiz, xatolik yuzaga keladi. DBMS yadrosi Microsoft Access bu turdagi maydonlar bo'yicha saralashni qo'llab-quvvatlamaydi.

ORDER BY bandi odatda SQL bayonotidagi oxirgi element hisoblanadi.

ORDER BY bandiga qoʻshimcha maydonlarni kiritishingiz mumkin. Yozuvlar birinchi navbatda ORDER BY bandida ko'rsatilgan maydon bo'yicha tartiblanadi. Birinchi maydon qiymatlari bir xil bo'lgan yozuvlar keyin belgilangan ikkinchi maydon bo'yicha tartiblanadi va hokazo.

Ma'lumotni olishda uni ma'lum bir tartiblangan shaklda olish muhim bo'lishi mumkin. Saralash har qanday ma'lumotlar turiga ega bo'lgan har qanday maydonlar bo'yicha amalga oshirilishi mumkin. Bu raqamli maydonlar uchun ortib borayotgan yoki kamayib borayotgan tartib bo'lishi mumkin. Belgilar (matn) maydonlari uchun bu tartiblangan bo'lishi mumkin alifbo tartibida, garchi u mohiyatan ham oʻsish yoki kamayish tartibida saralanadi. U har qanday yo'nalishda ham bajarilishi mumkin - A dan Z gacha va aksincha Z dan A gacha.

Saralash jarayonining mohiyati ketma-ketlikni ma'lum bir tartibga keltirishdir. Saralash haqida ko'proq ma'lumotni "Saralash algoritmlari" maqolasida topishingiz mumkin. Masalan, ixtiyoriy raqamlar ketma-ketligini o'sish tartibida tartiblash:

2, 4, 1, 5, 9

tartiblangan ketma-ketlikka olib kelishi kerak:

1, 2, 4, 5, 6

Xuddi shunday, satr qiymatlarini o'sish tartibida saralashda:

Ivanov Ivan, Petrov Petr, Ivanov Andrey

natija shunday bo'lishi kerak:

Ivanov Andrey, Ivanov Ivan, Petrov Petrov

Bu erda "Andrey Ivanov" qatori boshga o'tdi, chunki torlarni taqqoslash xarakterga qarab amalga oshiriladi. Ikkala satr ham bir xil "Ivanov" qahramonlari bilan boshlanadi. "Andrey" so'zidagi "A" belgisi alifboda "Ivan" so'zidagi "I" belgisidan oldinroq kelganligi sababli, bu qator oldinroq joylashtiriladi.

SQL so'rovida saralash

Saralashni amalga oshirish uchun so'rovlar qatoriga ORDER BY buyrug'ini qo'shishingiz kerak. Ushbu buyruqdan keyin saralash amalga oshiriladigan maydon ko'rsatiladi.

Misol uchun, biz tovarlar stolidagi tovarlardan foydalanamiz:

son
(Element raqami)
sarlavha
(Ism)
narx
(narxi)
1 mandarin50
2 Tarvuz120
3 Ananas80
4 Banan40

Bu yerdagi ma'lumotlar allaqachon "raqam" ustuni bo'yicha tartiblangan. Keling, alifbo tartibida saralangan mahsulotlar bilan jadvalni ko'rsatadigan so'rovni tuzamiz:

TANLASH * TOVARLARDAN BUYURTISH BO'YICHA

SELECT * FROM tovar – tovarlar jadvalidagi barcha maydonlarni tanlashni belgilaydi;

ORDER BY – saralash buyrug‘i;

sarlavha - saralash amalga oshiriladigan ustun.

Bunday so'rovni bajarish natijasi quyidagicha:

son sarlavha narx
3 Ananas80
2 Tarvuz120
4 Banan40
1 mandarin50

Bundan tashqari, istalgan jadval maydonlari uchun saralashingiz mumkin.

Saralash yo'nalishi

Odatiy bo'lib, ORDER BY buyrug'i o'sish tartibida tartiblanadi. Saralash yoʻnalishini qoʻlda boshqarish uchun ustun nomidan keyin ASC (koʻtarilish) yoki DESC (pasayish) kalit soʻzidan foydalaning. Shunday qilib, jadvalimizni narxlarning kamayishi tartibida ko'rsatish uchun siz quyidagi so'rovni so'rashingiz kerak:

TANLASH * NARX BO'YICHA BUYURTDIGAN tovarlardan

Narxning o'sishi bo'yicha saralash quyidagicha bo'ladi:

TANLASH * ASC narxi bo'yicha tovarlar BUYURTDI

Bir nechta maydonlar bo'yicha saralash

SQL bir vaqtning o'zida bir nechta maydonlar bo'yicha tartiblash imkonini beradi. Buning uchun ORDER BY buyrug'idan keyin kerakli maydonlar vergul bilan ajratilgan holda ko'rsatiladi. So'rov natijalarining tartibi tartiblash maydonlari ko'rsatilgan tartibda sozlanadi.

ustun 1 ustun 2 ustun 3
3 1 c
1 3 c
2 2 b
2 1 b
1 2 a
1 3 a
3 4 a

Jadvalni quyidagi qoidalarga muvofiq tartiblaymiz:

TANLASH * mytable TARTIBI BO'YICHA 1 ASC ustun, ustun 2 DESC, ustun 3 ASC

Bular. birinchi ustun ko'tariladi, ikkinchisi pasayadi, uchinchisi yana ko'tariladi. So'rov satrlarni birinchi ustun bo'yicha, so'ngra birinchi qoidani buzmasdan ikkinchi ustun bo'yicha tartiblaydi. Keyin, shuningdek, mavjud qoidalarni buzmasdan, uchinchisiga ko'ra. Natijada quyidagi ma'lumotlar to'plami bo'ladi:

ustun 1 ustun 2 ustun 3
1 3 a
1 3 c
1 2 a
2 2 b
2 1 b
3 1 a
3 1 c

So'rovda ORDER BY buyrug'ining tartibi

Satrlarni saralash ko'pincha ma'lumotlarni tanlash sharti bilan birga amalga oshiriladi. ORDER BY buyrug'i WHERE tanlash shartidan keyin qo'yiladi. Masalan, biz alifbo tartibida nomi bo'yicha saralangan narxi 100 rubldan past bo'lgan mahsulotlarni tanlaymiz:

TANLASH * Narxi 100 bo'lgan tovarlardan ASC narxi bo'yicha BUYURTMA

Ko'pincha so'rov natijasini ma'lum bir tartibda, masalan, alifbo tartibida ko'rsatishga ehtiyoj bor. Shu maqsadda DBMS SQL tilida maxsus funktsiyaga ega - saralash. Bunda dasturchi jiddiy dasturlash mahoratidan foydalanmasdan kerakli natijaga erishish uchun qaysi sohalarda va qanday tartibda sodir bo'lishini tanlashi mumkin.

Ma'lumotlar bazasida saralash nima?

Ma'lumotlar bazalari bilan ishlash doimiy ravishda tashkil etilishi kerak bo'lgan katta hajmdagi ma'lumotlar bilan bog'liq. Hozirgi vaqtda juda ko'p funktsiyalarga ega bo'lgan ma'lumotlar bazasi ma'lumotlar bazasi mavjud bo'lib, ulardan eng mashhurlari Oracle va MS SQLdir. Ma'lumotlarni saralash ma'lumotlar bazalari bilan ishlashning asosiy protseduralaridan biri sifatida ularning har birida maxsus o'rnatilgan funksiya bilan ta'minlanadi.

Reyting ma'lumotlari qidiruv jarayonini soddalashtirishga imkon beradi va ba'zi hollarda muayyan muammolarni hal qilishga yoki dasturning ishlashini optimallashtirishga yordam beradi. SQL saralash alohida tanlangan maydon tomonidan amalga oshiriladi va agar kerak bo'lsa, ushbu maydonning elementlarida bir xil qiymatlar mavjud bo'lsa, siz qatorlarning joylashishini aniqlaydigan qo'shimcha parametrlarni belgilashingiz mumkin.

Saralash buyrug'i

Ma'lumotlar bazasida SQL saralash ORDER BY funksiyasi yordamida amalga oshiriladi. Shunday qilib, ma'lumotlar bazasidan ma'lumotlarni chiqarishda, o'qish amalga oshiriladigan ustunlar va jadvallarni ko'rsatgandan so'ng, so'rovda tartiblash buyrug'i ko'rsatilishi kerak, so'ngra saralash amalga oshiriladigan maydon yoki maydonlarni aniqlash kerak.

Misol uchun, agar siz "Odamlar" jadvalidagi "Ism" va "Yosh" maydonlaridan ma'lumotlarni olishingiz kerak bo'lsa, natijani "Ism" ustuni bo'yicha alifbo tartibida ko'rsatsangiz, unda quyidagi so'rov yordam beradi: ODAMLARDAN ism, yoshni TANLASH.

Saralash tartibini qanday o'rnatish kerak?

Zamonaviy sharoitlar dasturchilar oldiga turli vazifalarni qo'yadi va ba'zida natija qanday tartibda ko'rsatilishini oldindan belgilash kerak bo'ladi - kamayish yoki o'sish tartibida, alifbo tartibida yoki teskari tartibda? Va buni SQLda amalga oshirish uchun so'rovga kalit so'z qo'shish orqali tartiblash tartibi aniqlanadi. Kerakli ma'lumot olinadigan maydonlar va jadvallarni tanlagandan so'ng, siz ORDER BY ni qo'shishingiz kerak, so'ngra saralashni xohlagan ustun nomini ko'rsatishingiz kerak.

Teskari tartibni olish uchun siz nomdan keyin DESC parametrini ko'rsatishingiz kerak. Agar elementlarni ikki yoki undan ortiq mezon bo'yicha tartiblash zarur bo'lsa, ustunlar vergul bilan ajratiladi va reytingda ustuvorlik ro'yxatda birinchi bo'lgan maydonga beriladi. Shuni ta'kidlash kerakki, DESC parametri elementlarni faqat bitta maydonda teskari tartibda joylashtirishni ta'minlaydi, uning nomidan keyin ushbu kalit so'z ko'rsatilgan, shuning uchun agar kerak bo'lsa, barcha tanlangan ustunlarda ko'rsatilishi kerak.

Saralashning alternativ usullari

Agar o'rnatilgan SQL tartiblash funksiyasidan foydalanish imkoni bo'lmasa, siz taniqli algoritmlardan birini yozishingiz mumkin. Agar siz elementlarning eng tez tartiblanishiga erishishingiz kerak bo'lsa, elementlar massivini yarmiga bo'lishga asoslangan usuldan foydalanishingiz kerak. Bundan tashqari, ikkita "qabariq" reyting usullari juda mashhur qo'shni elementlar noto'g'ri joylashtirilgan taqdirda joylarni almashtirish, eng katta elementni ro'yxat oxiriga yuboradigan "piramida tartiblash" va har bir elementning joylashishini navbat bilan oldindan belgilab beruvchi "qo'shish tartibi".

Algoritmni o'zingiz yozish saralash tezligini sezilarli darajada oshirmaydi, ammo bu dasturlash ko'nikmalarini rivojlantirishga yordam beradi, shuningdek, dastur samaradorligini oshirish uchun reyting sxemasini ma'lum bir ma'lumotlar bazasiga moslashtirish orqali jarayonni o'zgartirishga imkon beradi.

Kelajakda biz tanlovimizni saralashimiz kerak bo'lishi mumkin - matn uchun alifbo tartibida yoki raqamli qiymatlar uchun o'sish/kamayish bo'yicha. Bunday maqsadlar uchun SQL Mavjud maxsus operator Buyurtma berish .

1. Tanlangan ma'lumotlarni saralash.

Keling, butun jadvalimizni mahsulot sotish miqdori bo'yicha, ya'ni ustun bo'yicha tartiblaymiz Miqdori.

TANLASH * Summahsulot miqdori bo'yicha BUYURTISHDAN

Biz so'rov yozuvlarni maydonda o'sish tartibida tartiblaganligini ko'ramiz Miqdori. Operatorlar ketma-ketligiga rioya qilish majburiydir, ya'ni. operator Buyurtma berish so'rovning eng oxirida borishi kerak. Aks holda siz xato xabarini olasiz.

Shuningdek, operatorning xususiyati Buyurtma berish u so'rovda biz tanlamagan maydon bo'yicha ma'lumotlarni saralashi mumkin, ya'ni uning umuman ma'lumotlar bazasida bo'lishi kifoya.

2. Bir nechta maydonlar bo'yicha saralash.

Keling, misolimizni yana bitta maydon bo'yicha qo'shimcha ravishda saralaymiz. Maydon bo'lsin Shahar, bu mahsulotlarni sotish joyini ko'rsatadi.

TANLASH * Summahsulot BUYURTIB BILAN Miqdori, Shahar

Saralash tartibi so'rovdagi maydonlar tartibiga bog'liq bo'ladi. Ya'ni, bizning holatlarimizda, birinchi navbatda, ma'lumotlar ustunlar bo'yicha tartiblanadi Miqdori, keyin esa tomonidan Shahar.

3. Saralash yo‘nalishi.

Standart operator bo'lsa ham Buyurtma berish o'sish tartibida tartiblaydi, shuningdek, kamayish tartibida tartiblash qiymatlarini belgilashimiz mumkin. Buning uchun har bir maydonning oxirida operatorni qo'yamiz DESC (bu so'zning qisqartmasi KAMAYDI).

TANLASH * Summahsulot BUYURTIB BO'YICHA Miqdori DESC , Shahar

IN bu misolda, maydondagi qiymat Miqdori kamayish tartibida va maydonda saralangan Shahar- Ko'tarilish. Operator DESC faqat bitta ustun uchun amal qiladi, shuning uchun agar kerak bo'lsa, saralashda ishtirok etadigan har bir maydondan keyin yozilishi kerak.