Синтаксаар эрэмбэлэх. SQL дэх өгөгдлийг эрэмбэлэх (ORDER BY). Сонгосон өгөгдлийг эрэмбэлэх

Жич:
Одоогийн SQL хичээлийн ангиллын бүх өгүүлэлд сургалтын мэдээллийн санд суурилсан жишээ, асуудлыг ашигласан болно.

Харилцааны өгөгдлийн сангийн анхны ердийн хэлбэрийн дагуу хүснэгтийн мөрүүдийн дараалал хамаагүй байх ёстой. Гэвч бодит байдал дээр мэдээллийг дэлгэцэн дээр харуулахаас өмнө эрэмбэлэх шаардлагатай байдаг.

ORDER BY заалт нь SQL асуулгад ачаалагдсан мөрүүдийг эрэмбэлэх үүрэгтэй. Энэ нь хүсэлтийн хамгийн төгсгөлд байрладаг:

СОНГОХ<Перечень столбцов>FROM<Перечень таблиц>ЗАХИАЛАХ<Условие сортировки>

Эрэмбэлэх нөхцөл нь үр дүнгийн хүснэгтийн мөрүүдийг эрэмбэлэх баганыг тодорхойлдог.

col1, col2-ээр ЗАХИАЛАХ

SQL дээр эрэмбэлэх

Өсөх, буурах гэсэн 2 эрэмбэлэх сонголт байдаг. Асуулгад эрэмбэлэх төрлийг зааж өгөхийн тулд баганын нэрний ард заана уу түлхүүр үгӨсөх эсвэл буурах дарааллыг тус тус тодорхойлдог ASC (өсөх) эсвэл DESC (буурах). Анхдагч төрөл нь ASC:

ORDER BY col1 -- дараагийн заалт нь ORDER BY col1 ACS-тэй тэнцүү байх болно

Мөн өөр өөр баганад өөр дарааллыг зааж өгөх боломжтой:

col1 DESC, col2 ASC-ээр ЗАХИАЛАХ

Материалыг нэгтгэхийн тулд боловсролын мэдээллийн сан дээрх асуудлыг шийднэ үү.

Та ажилтны үнэмлэхний жагсаалтыг өсгөх дарааллаар, ажилд авсан огноогоор эрэмбэлсэн, шинэээс хамгийн хуучин хүртэл нь авах шаардлагатай.

Ажилчдаас ID, Бүлэг, Ажилд авах_огноог Бүлгээр ЗАХИАЛАХ, Ажилд авах_огноо DESC

SELECT мэдэгдлийн синтаксийг ORDER BY заалтаар нэмж оруулъя (босоо мөр нь сонголтуудын аль нэгийг сонгох ёстой гэсэн үг юм):

[Хүснэгтийн нэр.]Баганын нэр[, [Хүснэгтийн нэр.]Баганы нэр2 ...] [[Өгөгдлийн сангийн нэр.]Схемийн нэр.]Хүснэгтийн нэр баганын нэр [, [Хүснэгтийн нэр.]баганы нэр2 ...]] СОНГОХ

  • Урагшаа >

Хэрэв office-menu.ru сайтын материалууд танд тусалсан бол төслийг дэмжээрэй, ингэснээр би үүнийг цаашид хөгжүүлэх боломжтой болно.

Access дахь ORDER BY заалт нь асуулгад буцаасан бүртгэлүүдийг заасан талбарын утгуудын өсөх эсвэл буурах дарааллаар эрэмбэлдэг.

Синтакс

СОНГОХ талбарын_жагсаалт
FROM ширээ
ХААНА сонгох_нөхцөл
[, талбар2 ][, ...]]]

SELECT мэдэгдэл ORDER BY заалтыг агуулсан дараах элементүүдийг агуулна.

Тэмдэглэл

ORDER BY заалт нь сонголттой. Мэдээллийг эрэмбэлсэн хэлбэрээр харуулах шаардлагатай үед үүнийг ашиглах ёстой.

Анхдагч эрэмбэлэх дараалал нь өсөх (А-аас Я, 0-ээс 9) байна. Доорх хоёр жишээ нь ажилтны нэрийг овог нэрээр нь эрэмбэлэхийг харуулж байна.

Овог, Нэрийг сонго
Ажилчдаас
Овогоороо ЗАХИАЛАХ;
Овог, Нэрийг сонго
Ажилчдаас
Овог ASC-ээр ЗАХИАЛАХ;

Буурах дарааллаар (З-ээс А, 9-ээс 0 хүртэл) эрэмбэлэхийн тулд бүртгэлүүдийг эрэмбэлэхийг хүссэн талбар бүрийн төгсгөлд DESC гэсэн үгийг нэмнэ үү. Доорх жишээнд ажилчдын нэрсийг цалингийн буурах дарааллаар эрэмбэлсэн.

Овог, Цалин СОНГОХ
Ажилчдаас
Цалингаар ЗАХИАЛАХ DESC, Овог;

Хэрэв та ORDER BY заалтад Memo өгөгдөл эсвэл OLE объектуудыг агуулсан талбарыг зааж өгвөл алдаа гарна. DBMS цөм Microsoft Accessэдгээр төрлийн талбараар эрэмбэлэхийг дэмждэггүй.

ORDER BY заалт нь ихэвчлэн SQL хэллэгийн сүүлчийн элемент юм.

Та ORDER BY заалтад нэмэлт талбар оруулж болно. Бичлэгүүдийг ORDER BY зүйлд заасан талбараар эхлээд эрэмбэлдэг. Эхний талбарын ижил утгатай бичлэгүүдийг дараа нь заасан хоёр дахь талбараар эрэмбэлсэн гэх мэт.

Мэдээллийг олж авахдаа үүнийг тодорхой дараалсан хэлбэрээр авах нь чухал байж болно. Ямар ч төрлийн өгөгдлийн талбараар эрэмбэлэх боломжтой. Энэ нь тоон талбаруудын хувьд өсөх эсвэл буурах төрөл байж болно. Тэмдэгтийн (текст) талбаруудын хувьд үүнийг эрэмбэлж болно цагаан толгойн дараалал, гэхдээ мөн чанартаа энэ нь мөн өсөх эсвэл буурах дарааллаар эрэмбэлэгддэг. Үүнийг ямар ч чиглэлд хийж болно - А-аас Я хүртэл, эсрэгээр Z-ээс А хүртэл.

Ангилах үйл явцын мөн чанар нь дарааллыг тодорхой дарааллаар багасгах явдал юм. Та "Ангилах алгоритмууд" нийтлэлээс эрэмбэлэх талаар илүү ихийг мэдэж болно. Жишээлбэл, дурын тооны дарааллыг өсөх дарааллаар эрэмбэлэх:

2, 4, 1, 5, 9

Үүний үр дүнд дараалсан дараалал гарах ёстой:

1, 2, 4, 5, 6

Үүний нэгэн адил, мөрийн утгуудыг өсөх дарааллаар эрэмбэлэхдээ:

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

үр дүн нь байх ёстой:

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

Энд "Андрей Иванов" гэсэн мөр эхэнд шилжсэн, учир нь утсыг харьцуулах нь тэмдэгт тус бүрээр явагддаг. Хоёр мөр хоёулаа "Иванов" гэсэн ижил дүрээр эхэлдэг. "Андрей" гэдэг үгийн "А" тэмдэг нь "Иван" гэсэн үгний "Би" тэмдэгээс цагаан толгойн үсгийн өмнө ирсэн тул энэ мөрийг эрт байрлуулна.

SQL Query-д эрэмбэлэх

Эрэмбэлэхийн тулд та асуулгын мөрөнд ORDER BY командыг нэмэх хэрэгтэй. Энэ командын дараа эрэмбэлэх талбарыг заана.

Жишээлбэл, бид барааны ширээний барааг ашигладаг:

тоо
(Зүйлийн дугаар)
гарчиг
(Нэр)
Үнэ
(Үнэ)
1 Мандарин50
2 Тарвас120
3 Хан боргоцой80
4 Банан40

Энд байгаа өгөгдөл нь "тоо" баганаар аль хэдийн эрэмблэгдсэн байна. Одоо цагаан толгойн дарааллаар эрэмбэлэгдсэн бүтээгдэхүүн бүхий хүснэгтийг харуулах асуулга байгуулцгаая.

СОНГОХ * Бараанаас ЗАХИАЛГАА нэрээр

SELECT * FROM bars – барааны хүснэгтээс бүх талбарыг сонгохыг заана;

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-аас ORDER BY багана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 үнээр ЗАХИАЛАХ

Ихэнхдээ асуулгын үр дүнг тодорхой дарааллаар, жишээлбэл, цагаан толгойн дарааллаар харуулах шаардлагатай байдаг. Энэ зорилгоор DBMS нь SQL хэл дээрх тусгай функцтэй байдаг - эрэмбэлэх. Энэ тохиолдолд програмист нь ноцтой програмчлалын ур чадвар ашиглахгүйгээр хүссэн үр дүнд хүрэхийн тулд аль талбарт, ямар дарааллаар гарахыг сонгох боломжтой.

Өгөгдлийн санд эрэмбэлэх гэж юу вэ?

Өгөгдлийн сантай ажиллах нь зохион байгуулах шаардлагатай их хэмжээний мэдээлэлтэй байнга холбоотой байдаг. Одоогийн байдлаар өргөн хүрээний функцтэй хэд хэдэн DBMS байдаг бөгөөд хамгийн алдартай нь Oracle болон MS SQL юм. Мэдээллийг эрэмбэлэх нь өгөгдлийн сантай ажиллах үндсэн процедурын нэг нь тус бүрд нь суулгасан тусгай функцээр хангагдсан байдаг.

Мэдээллийг эрэмбэлэх нь хайлтын процессыг хялбарчлах боломжийг олгодог бөгөөд зарим тохиолдолд зарим асуудлыг шийдвэрлэх эсвэл програмын ажиллагааг оновчтой болгоход тусалдаг. SQL эрэмбэлэх ажлыг тусад нь сонгосон талбараар гүйцэтгэдэг бөгөөд хэрэв шаардлагатай бол энэ талбарын элементүүдэд ижил утгатай байвал та мөрийн байршлыг тодорхойлох нэмэлт параметрүүдийг зааж өгч болно.

Эрэмбэлэх команд

Өгөгдлийн санд SQL эрэмбэлэх нь ORDER BY функцийг ашиглан хийгддэг. Тиймээс, мэдээллийн сангаас мэдээлэл гаргахдаа унших багана, хүснэгтийг зааж өгсний дараа асуулга нь эрэмбэлэх командыг зааж өгөх ёстой бөгөөд дараа нь эрэмбэлэх талбар эсвэл талбаруудыг тодорхойлох ёстой.

Жишээлбэл, хэрэв та "Хүмүүс" хүснэгтийн Нэр, Насны талбараас өгөгдлийг авах шаардлагатай бол үр дүнг "Нэр" баганаар цагаан толгойн дарааллаар харуулах шаардлагатай бол дараах асуулга туслах болно. Хүмүүсээс Нэр, Насыг Нэрээр нь ЗАХИАЛНА.

Эрэмбэлэх дарааллыг хэрхэн тохируулах вэ?

Орчин үеийн нөхцөл байдал нь програмистуудад янз бүрийн даалгавар өгдөг бөгөөд заримдаа үр дүнг ямар дарааллаар харуулахыг урьдчилан тодорхойлох шаардлагатай байдаг - буурах эсвэл өсөх дарааллаар, цагаан толгойн үсгийн дарааллаар эсвэл урвуу дарааллаар? Үүнийг SQL дээр хийхийн тулд эрэмбэлэх дарааллыг асуулгад түлхүүр үг нэмэх замаар тодорхойлно. Хүссэн мэдээллийг авах талбар, хүснэгтүүдийг сонгосны дараа ORDER BY-г нэмж, дараа нь эрэмбэлэх баганын нэрийг зааж өгөх ёстой.

Урвуу дарааллыг авахын тулд нэрний дараа DESC параметрийг зааж өгөх ёстой. Хэрэв хоёр ба түүнээс дээш шалгуурын дагуу элементүүдийг эрэмбэлэх шаардлагатай бол баганыг таслалаар тусгаарлаж, жагсаалтын эхний байранд орсон хэсэгт эрэмбэлэх давуу эрх олгоно. DESC параметр нь зөвхөн нэг талбарт элементүүдийг урвуу дарааллаар байрлуулах боломжийг олгодог бөгөөд нэрний дараа энэ түлхүүр үгийг заасан тул шаардлагатай бол сонгосон бүх баганад зааж өгөх ёстой гэдгийг тэмдэглэх нь зүйтэй.

Альтернатив ангилах аргууд

Хэрэв суулгасан SQL эрэмбэлэх функцийг ашиглах боломжгүй бол та сайн мэддэг алгоритмуудын аль нэгийг бичиж болно. Хэрэв та элементүүдийн хамгийн хурдан дарааллыг олж авах шаардлагатай бол элементүүдийн массивыг хагасаар хуваах аргыг ашиглах хэрэгтэй. Мөн "хөөс" зэрэглэл тогтоох аргууд нь маш алдартай бөгөөд үүнд хоёр хөрш зэргэлдээ элементүүдБуруу байршуулсан тохиолдолд хамгийн том элементийг жагсаалтын төгсгөлд илгээдэг "пирамид эрэмбэлэх", элемент бүрийн байршлыг урьдчилан тодорхойлсон "оруулах эрэмбэлэх".

Алгоритмыг өөрөө бичих нь эрэмбэлэх хурдыг төдийлөн нэмэгдүүлэхгүй, гэхдээ энэ нь програмчлалын ур чадварыг хөгжүүлэхэд хувь нэмэр оруулахаас гадна програмын үр ашгийг дээшлүүлэхийн тулд эрэмбийн схемийг тодорхой мэдээллийн санд тохируулах замаар үйл явцыг өөрчлөх боломжийг олгоно.

Ирээдүйд бид сонголтоо текстийн цагаан толгойн дарааллаар эсвэл тоон утгын хувьд өсөх/буурах байдлаар эрэмбэлэх шаардлагатай болж магадгүй юм. Ийм зорилгоор SQLБайна тусгай оператор ЗАХИАЛАХ .

1. Сонгосон өгөгдлийг эрэмбэлэх.

Хүснэгтийг бүхэлд нь бүтээгдэхүүний борлуулалтын хэмжээгээр, тухайлбал баганаар эрэмбэлье Дүн.

СОНГОХ * Sumproduct-аас ДҮНГЭЭР ЗАХИАЛАА

Асуулга нь талбарт бүртгэлүүдийг өсөх дарааллаар эрэмбэлсэн болохыг бид харж байна Дүн. Операторуудын дарааллыг дагах нь зайлшгүй юм, i.e. оператор ЗАХИАЛАХ хүсэлтийн хамгийн төгсгөлд очих ёстой. Үгүй бол та алдааны мэдэгдэл хүлээн авах болно.

Мөн операторын онцлог ЗАХИАЛАХ Энэ нь бидний асуулгад сонгоогүй талбараар өгөгдлийг ангилах боломжтой, өөрөөр хэлбэл мэдээллийн санд байгаа нь хангалттай юм.

2. Хэд хэдэн талбараар эрэмбэлэх.

Одоо жишээгээ нэмэлт нэг талбараар эрэмбэлье. Талбай байх болтугай Хот, бүтээгдэхүүн борлуулах газрыг харуулдаг.

СОНГОХ * Sumproduct-аас ДҮНГЭЭР ЗАХИАЛАА, Хот

Ангилах дараалал нь хүсэлтийн талбаруудын дарааллаас хамаарна. Өөрөөр хэлбэл, манай тохиолдолд эхлээд өгөгдлийг баганаар эрэмбэлэх болно Дүн, дараа нь Хот.

3. Эрэмбэлэх чиглэл.

Хэдийгээр анхдагч оператор ЗАХИАЛАХ өсөх дарааллаар эрэмбэлэхийн зэрэгцээ бид буурах дарааллаар эрэмбэлэх утгыг зааж өгч болно. Үүнийг хийхийн тулд талбар бүрийн төгсгөлд операторыг байрлуулна DESC (энэ нь үгийн товчлол юм БУУДАХ).

СОНГОХ * Sumproduct-аас ЗАХИАЛГЫН дүнгээр DESC , Хот

IN энэ жишээнд, талбар дахь үнэ цэнэ Дүнбуурах дарааллаар эрэмбэлсэн ба талбарт Хот- Өсөж байна. Оператор DESC нь зөвхөн нэг баганад хамаарах тул шаардлагатай бол эрэмбэлэхэд оролцож буй талбар бүрийн ард бичих ёстой.