Təsvirə görə sifariş edin. Verilənlər bazası ilə işləmək. SQL sorğusu nəticəsində verilənlərin çeşidlənməsi. Sorğuda ORDER BY əmrinin sırası

Çox vaxt sorğunun nəticəsini müəyyən bir ardıcıllıqla, məsələn, əlifba sırası ilə göstərməyə ehtiyac var. Bunun üçün DBMS var xüsusi funksiya haqqında SQL dili- çeşidləmə. Eyni zamanda proqramçı ciddi proqramlaşdırma bacarıqlarından istifadə etmədən istədiyi nəticəni əldə etmək üçün hansı sahələrdə və hansı ardıcıllıqla baş verəcəyini seçə bilər.

Verilənlər bazasında çeşidləmə nədir?

Verilənlər bazası ilə işləmək daim sifariş edilməli olan böyük miqdarda məlumatla əlaqələndirilir. Hal-hazırda geniş funksiyaları olan bir sıra DBMS mövcuddur ki, onlardan ən populyarları Oracle və MS SQL-dir. Məlumatların çeşidlənməsi verilənlər bazası ilə işləməkdə əsas prosedurlardan biri kimi onların hər birində xüsusi daxili funksiya ilə təmin edilir.

Reytinq məlumatları axtarış prosesini sadələşdirməyə imkan verir və bəzi hallarda bəzi problemləri həll etməyə və ya proqramı optimallaşdırmağa kömək edir. SQL çeşidlənməsi ayrıca seçilmiş sahə tərəfindən həyata keçirilir və lazım olduqda, bu sahənin elementlərində eyni dəyərlər varsa, təyin edə bilərsiniz Əlavə seçimlər, cərgələrin düzülüşün müəyyən edilməsi.

Sırala əmri

Verilənlər bazasında SQL çeşidlənməsi ORDER BY funksiyasından istifadə etməklə təmin edilir. Belə ki, verilənlər bazasından məlumatları nümayiş etdirərkən oxunun aparılacağı sütunları və cədvəlləri göstərdikdən sonra sorğuda çeşidləmə əmrini təyin etmək, sonra isə çeşidləmənin aparılacağı sahəni və ya sahələri müəyyən etmək lazımdır.

Məsələn, nəticəni Ad sütununda əlifba sırası ilə göstərərkən, İnsanlar cədvəlindən Ad və Yaş sahələrindən məlumat almaq lazımdırsa, onda aşağıdakı sorğu kömək edəcək: İnsanlardan Adı, Yaşı Ada görə SİFARİŞ SEÇİN.

Çeşidləmə qaydasını necə təyin etmək olar?

Müasir şərait proqramçılar qarşısında müxtəlif vəzifələr qoyur və bəzən nəticənin hansı ardıcıllıqla göstəriləcəyini əvvəlcədən müəyyən etmək lazımdır - azalan və ya artan qaydada, əlifba sırası ilə, yoxsa tərs qaydada? Bunun üçün isə SQL-də sorğuya açar söz əlavə edilməklə çeşidləmə qaydası müəyyən edilir. İstədiyiniz məlumatın alınacağı sahələr və cədvəllər seçildikdən sonra SİPARİŞ BY əlavə etməli və sonra çeşidləmək istədiyiniz sütunun adını göstərməlisiniz.

Əks sıranı əldə etmək üçün addan sonra DESC parametrini göstərməlisiniz. Elementləri iki və ya daha çox meyara görə çeşidləmək lazımdırsa, o zaman sütunlar vergüllə ayrılır və sıralama prioriteti siyahıda birinci olan sahəyə verilir. Qeyd etmək lazımdır ki, elementlərin tərs qaydada sıralanması, DESC parametri adından sonra bu açar sözün göstərildiyi hər biri yalnız bir sahəni nəzərdə tutur, buna görə də zəruri hallarda bütün seçilmiş sütunlarda göstərilməlidir.

Alternativ çeşidləmə üsulları

Daxili SQL çeşidləmə funksiyasından istifadə etmək mümkün deyilsə, məlum alqoritmlərdən biri yazıla bilər. Elementlərin ən sürətli sıralanmasına nail olmaq lazımdırsa, bir sıra elementlərin yarısını kəsməyə əsaslanan bir üsuldan istifadə etməyə dəyər. Yanlış mövqe olduqda iki bitişik elementin dəyişdirildiyi "köpüklü" sıralama metodları, siyahının sonuna ən böyük elementi göndərən "yığın çeşidləmə" və "daxil et sort" üsulları da çox populyardır. növbə ilə hər bir elementin yeri.

Alqoritmin öz-özünə yazılması çeşidləmə sürətini əhəmiyyətli dərəcədə artırmayacaq, lakin bu, proqramlaşdırma bacarıqlarının inkişafına töhfə verəcək və həmçinin səmərəliliyi artırmaq üçün müəyyən bir verilənlər bazası üçün sıralama sxemini tənzimləməklə prosesi dəyişdirməyə imkan verəcəkdir. proqramın.

Məlumatları əldə edərkən onu müəyyən bir ardıcıllıqla əldə etmək vacibdir. Çeşidləmə istənilən məlumat növü ilə istənilən sahədə edilə bilər. Bu ədədi sahələr üçün artan və ya azalan qaydada sıralana bilər. Simvol (mətn) sahələri üçün bu, əlifba sırası ilə sıralana bilər, baxmayaraq ki, əslində o, həm də artan və ya azalan qaydada çeşidlənir. Həm də istənilən istiqamətdə - A-dan Z-yə və əksinə Z-dən A-ya qədər həyata keçirilə bilər.

Çeşidləmə prosesinin mahiyyəti ardıcıllığı müəyyən bir sıraya gətirməkdir. Çeşidləmə haqqında daha çox məlumatı "Çeşidləmə alqoritmləri" məqaləsində öyrənə bilərsiniz Məsələn, ixtiyari ədədi ardıcıllığın artan qaydada çeşidlənməsi:

2, 4, 1, 5, 9

ardıcıl ardıcıllıqla nəticələnməlidir:

1, 2, 4, 5, 6

Eynilə, sətir dəyərlərinin artan qaydada çeşidlənməsi zamanı:

İvanov İvan, Petrov Petr, İvanov Andrey

nəticə belə olmalıdır:

İvanov Andrey, İvanov İvan, Petrov Petr

Burada "İvanov Andrey" simli başlanğıca keçdi, çünki simlərin müqayisəsi xarakterə görə aparılır. Hər iki sətir eyni “İvanov” personajları ilə başlayır. “Andrey” sözündəki “A” hərfi əlifbada “İvan” sözündəki “Mən” simvolundan əvvəl gəldiyindən, bu sətir daha əvvəl yerləşdiriləcək.

SQL Query-də çeşidləmə

Çeşidləmə yerinə yetirmək üçün sorğu sətirinə SİPARİŞ BY əmrini əlavə etməlisiniz. Bu əmrdən sonra çeşidləmənin aparıldığı sahə göstərilir.

Məsələn, biz mal cədvəlindən istifadə edirik:

ədəd
(Element nömrəsi)
başlıq
(başlıq)
qiymət
(qiymət)
1 Mandarin50
2 Qarpız120
3 Bir ananas80
4 banan40

Buradakı məlumatlar artıq "num" sütunu ilə sıralanır. İndi, əlifba sırası ilə çeşidlənmiş məhsulların olduğu cədvəli göstərəcək bir sorğu quraq:

SEÇİN * MALLARDAN SİFARİŞ ÜZRƏ

SELECT * FROM mal - mallar cədvəlindən bütün sahələrin seçilməsini müəyyən edir;

ORDER BY - çeşidləmə əmri;

başlıq sıralamaq üçün sütundur.

Belə bir sorğunun nəticəsi aşağıdakılardır:

ədəd başlıq qiymət
3 Bir ananas80
2 Qarpız120
4 banan40
1 Mandarin50

Cədvəldəki hər hansı sahə üzrə çeşidləyə bilərsiniz.

Çeşidləmə istiqaməti

Varsayılan olaraq, ORDER BY əmri artan qaydada çeşidlənir. Çeşidləmə istiqamətini əl ilə idarə etmək üçün sütun adından sonra ASC (artan) və ya DESC (azalan) açar sözü gəlir. Beləliklə, cədvəlimizi qiymətlərin azalan ardıcıllığı ilə göstərmək üçün sorğunu belə qoymalıyıq:

SEÇİN * MALLARDAN QİYMƏTƏ GÖRƏ SİFARİŞ

Artan qaydada çeşidləmə belə olardı:

SEÇİN * ASC qiymətinə görə mal SİFARİŞİNDƏN

Çox sahələr üzrə çeşidləmə

SQL eyni anda birdən çox sahə üzrə çeşidləməyə imkan verir. Bunun üçün ORDER BY əmrindən sonra tələb olunan sahələr vergüllə ayrılaraq qeyd edilir. Sorğu nəticəsində sıralama, çeşidləmə sahələrinin göstərildiyi qaydada konfiqurasiya ediləcək.

sütun 1 sütun 2 sütun 3
3 1 c
1 3 c
2 2 b
2 1 b
1 2 a
1 3 a
3 4 a

Cədvəli aşağıdakı qaydalara uyğun olaraq çeşidləyin:

SEÇİN * ASC sütun 1, ASC sütun 2, ASC sütun 3 SƏRİFƏSİNDƏN

Bunlar. birinci sütun artan, ikinci enən, üçüncüsü yenidən yüksələn. Sorğu sətirləri birinci sütuna, sonra birinci qaydanı pozmadan ikinci sütuna görə sıralayacaq. Sonra, eyni şəkildə, mövcud qaydaları pozmadan, üçüncüyə uyğun olaraq. Nəticə belə bir verilənlər toplusudur:

sütun 1 sütun 2 sütun 3
1 3 a
1 3 c
1 2 a
2 2 b
2 1 b
3 1 a
3 1 c

Sorğuda ORDER BY əmrinin sırası

Sətirlərin çeşidlənməsi ən çox məlumat seçimi şərti ilə birlikdə həyata keçirilir. ORDER BY əmri WHERE seçim bəndindən sonra yerləşdirilir. Məsələn, əlifba sırası ilə ada görə çeşidləməklə qiyməti 100 rubldan az olan məhsulları seçirik:

SEÇİN * Qiyməti 100 olan mallardan ASC qiymətinə görə SİFARİŞ

Access-də ORDER BY bəndi sorğu ilə qaytarılan qeydləri göstərilən sahə(lərin) dəyərlərinə görə artan və ya azalan qaydada çeşidləyir.

Sintaksis

SEÇİN sahə_siyahısı
FROM masa
HARADA seçim_şərti
[, sahə 2 ][, ...]]]

ORDER BY bəndini ehtiva edən SELECT ifadəsi aşağıdakı elementləri ehtiva edir:

Qeydlər

ORDER BY bəndi isteğe bağlıdır. Məlumatları çeşidlənmiş formada göstərmək lazım olduqda istifadə edilməlidir.

Defolt çeşidləmə qaydası artandır (A-dan Z-yə, 0-dan 9-a qədər). Aşağıdakı iki nümunə işçi adlarının soyadına görə çeşidlənməsini göstərir.

Soyadı, Adı SEÇİN
İşçilərdən
Soyadla SİFARİŞ;
Soyadı, Adı SEÇİN
İşçilərdən
Soyad ASC ilə SİFARİŞ;

Azalan qaydada çeşidləmək üçün (Z-dən A, 9-dan 0-a qədər) qeydləri çeşidləmək istədiyiniz hər bir sahənin sonuna qorunan DESC sözünü əlavə edin. Aşağıdakı nümunə işçilərin soyadlarını əmək haqqının azalma ardıcıllığı ilə sıralayır.

Soyad, Əmək haqqı SEÇİN
İşçilərdən
SİFARİŞ İLƏ Əmək haqqı DESC, Soyad;

SİFARİŞ BY bəndində Memo və ya tipli məlumatları ehtiva edən sahəni göstərsəniz OLE obyektləri, xəta baş verəcək. Nüvə DBMS Microsoft Access bu tip sahələr üzrə çeşidləməyi dəstəkləmir.

ORDER BY bəndi adətən SQL ifadəsindəki sonuncu elementdir.

Əlavə sahələr SİPARİŞ BY bəndinə daxil edilə bilər. Qeydlər ilk növbədə SİPARİŞ BY bəndində birinci qeyd olunan sahəyə görə sıralanır. Birinci sahədə eyni qiymətə malik qeydlər daha sonra ikinci sahədə göstərilən sahə üzrə çeşidlənir və s.


Növbəti döngə:

Addım 8: Sadə Çeşidləmə

Əgər SQL sorğunuzun nəticəsi müəyyən bir hesabatın mənbə materialına çevrilirsə, onda məlumatların çeşidlənməsi məsələsi son dərəcə vacib olur, çünki düzgün çeşidlənməmiş hesabatı oxuyan bir şəxs üçün hesabatı tez tapmaq çox çətindir. ona lazım olan məlumatın bir hissəsidir. Məlumatları sorğunun nəticəsinin sütunları üzrə çeşidləmək üçün (bizim halda cədvəlin sahələrinə görə) SQL ORDER BY açar sözündən istifadə edir. Ən sadə çeşidləmə nümunəsi aşağıda verilmişdir. 2-ci addımdakı sorğuya əsasən: “Sadə seçim meyarı ilə sorğu”. Biz işçiləri S_NAME sahəsinə (tam ad) görə çeşidləyirik.

S_NAME, S_TƏCRÜBƏSİ S_TƏCRÜBƏSİNDƏ D_STAFF-DAN SEÇİN

SQL sorğusunun nəticəsinin bir sahə üzrə çeşidlənməsi.

Addım 9. Kompleks çeşidləmə

Tez-tez və demək olar ki, həmişə məlumatları birdən çox sütuna görə çeşidləmək lazımdır və həmişə artan qaydada deyil. SQL sintaksisi ORDER BY açar sözündən sonra sütunların vergüllə ayrılmış siyahısını, həmçinin hər bir sütun üçün çeşidləmə metodunu nəzərdə tutur: dəyərlərin artan sırası ilə - ASC və ya azalan qaydada - DESC. Aşağıdakı nümunədə biz bütün işçilər üçün qeydləri iş stajına görə azalan qaydada göstəririk. Eyni stajı olan işçilər əlifba sırası ilə sıralanır.

S_EXPERIENCE DESC, S_NAME ASC tərəfindən D_STAFF SİFARİŞİNDƏN S_EXPERIENCE, S_NAME SEÇİN


SQL sorğu nəticəsinin iki sahə üzrə çeşidlənməsi.

Çox vaxt tərs sıralama [tarix] sütunları ilə istifadə olunur. Tarix, məsələn, məlumatın daxil edildiyi tarixi saxlayırsa, geri çeşidlənərkən, siyahının ən əvvəlində qalanlara nisbətən bu yaxınlarda əlavə edilmiş qeydlər olur. Əgər sorğu verilənlər bazasından xəbər elanlarını götürürsə, o zaman biz elanların aktuallığına görə azalma ardıcıllığı ilə çeşidlənmiş siyahısını əldə edirik, bu son dərəcə faydalı ola bilər, çünki elanlar adətən yuxarıdan aşağıya doğru oxunur və onların hamısı xəbərlərdə göstərilmir. saytlar, lakin yalnız bir neçə ən "təzə".




Üst