الترتيب حسب الوصف. العمل مع قاعدة البيانات. فرز البيانات نتيجة لاستعلام 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

وبالمثل، عند الفرز بترتيب تصاعدي لقيم السلسلة:

إيفانوف إيفان، بيتروف بيتر، إيفانوف أندريه

يجب أن تكون النتيجة:

إيفانوف أندريه، إيفانوف إيفان، بيتروف بيتروف

هنا انتقل السطر "أندريه إيفانوف" إلى البداية، حيث تتم مقارنة السلاسل حرفًا بحرف. يبدأ كلا السطرين بنفس الأحرف "إيفانوف". نظرًا لأن الرمز "A" في كلمة "Andrey" يأتي في الأبجدية أقدم من الرمز "I" في كلمة "Ivan"، فسيتم وضع هذا السطر في وقت سابق.

الفرز في استعلام SQL

لإجراء الفرز، تحتاج إلى إضافة الأمر ORDER BY إلى سلسلة الاستعلام. بعد هذا الأمر، تتم الإشارة إلى الحقل الذي يتم من خلاله الفرز.

على سبيل المثال، نستخدم سلع جدول البضائع:

رقم
(رقم الشيء)
عنوان
(اسم)
سعر
(سعر)
1 الماندرين50
2 بطيخ120
3 أناناس80
4 موز40

تم ترتيب البيانات هنا بالفعل حسب العمود "num". الآن، لنقم بإنشاء استعلام يعرض جدولًا بالمنتجات مرتبة حسب الترتيب الأبجدي:

يختار * من البضائع بالترتيب حسب العنوان

تحديد * من البضائع – يحدد تحديد كافة الحقول من جدول البضائع؛

ORDER BY – أمر الفرز؛

العنوان - العمود الذي سيتم من خلاله إجراء الفرز.

نتيجة تنفيذ مثل هذا الطلب هي كما يلي:

رقم عنوان سعر
3 أناناس80
2 بطيخ120
4 موز40
1 الماندرين50

يمكنك أيضًا الفرز لأي من حقول الجدول.

اتجاه الفرز

بشكل افتراضي، يقوم الأمر ORDER BY بالفرز بترتيب تصاعدي. للتحكم يدويًا في اتجاه الفرز، استخدم الكلمة الأساسية ASC (تصاعدي) أو DESC (تنازلي) بعد اسم العمود. وبالتالي، لعرض جدولنا بترتيب تنازلي للأسعار، عليك طرح الاستعلام على النحو التالي:

يختار * من السلع الطلب حسب السعر 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 بفرز السجلات التي يتم إرجاعها بواسطة استعلام بترتيب تصاعدي أو تنازلي لقيم الحقل (الحقول) المحددة.

بناء الجملة

يختار field_list
من طاولة
أين Selection_condition
[, المجال2 ][, ...]]]

تتضمن عبارة SELECT التي تحتوي على جملة ORDER BY العناصر التالية:

ملحوظات

جملة ORDER BY اختيارية. يجب استخدامه عندما تحتاج إلى عرض البيانات في شكل مرتبة.

ترتيب الفرز الافتراضي هو تصاعدي (من A إلى Z، ومن 0 إلى 9). يوضح المثالان أدناه فرز أسماء الموظفين حسب الاسم الأخير.

حدد اسم العائلة، الاسم الأول
من الموظفين
الطلب حسب اسم العائلة؛
حدد اسم العائلة، الاسم الأول
من الموظفين
الترتيب حسب اسم العائلة ASC؛

للفرز بترتيب تنازلي (من Z إلى A، ومن 9 إلى 0)، أضف الكلمة المحجوزة DESC في نهاية كل حقل تريد فرز السجلات به. يقوم المثال أدناه بفرز أسماء الموظفين بترتيب تنازلي للراتب.

اختر الاسم الأخير، الراتب
من الموظفين
الطلب حسب تصنيف الراتب، الاسم الأخير؛

إذا قمت بتحديد حقل في جملة ORDER BY يحتوي على بيانات من النوع Memo أو كائنات OLE، سيحدث خطأ. جوهر مايكروسوفت نظم إدارة قواعد البياناتلا يدعم Access الفرز حسب هذه الأنواع من الحقول.

عادة ما تكون جملة ORDER BY هي العنصر الأخير في عبارة SQL.

يمكنك تضمين حقول إضافية في جملة ORDER BY. يتم فرز السجلات أولاً حسب الحقل المحدد أولاً في عبارة ORDER BY. ثم يتم فرز السجلات التي لها نفس قيم الحقل الأول حسب الحقل الثاني المحدد، وهكذا.


الدورة القادمة:

الخطوة 8: الفرز البسيط

إذا كانت نتيجة استعلام SQL الخاص بك هي أن تصبح المادة المصدر للتقرير، فإن مسألة فرز البيانات فيه تصبح في غاية الأهمية، حيث أنه من الصعب جدًا على الشخص الذي يقرأ تقريرًا لم يتم فرزه بشكل صحيح العثور بسرعة على المصدر قطعة من المعلومات التي يحتاجونها. لفرز البيانات حسب أعمدة نتائج الاستعلام (في حالتنا، حسب حقول الجدول)، يستخدم SQL الكلمة الأساسية ORDER BY. ويرد أدناه مثال على أبسط الفرز. الأساس مأخوذ من الطلب من الخطوة 2: "الطلب بمعيار اختيار بسيط". نقوم بفرز الموظفين حسب حقل S_NAME (الاسم الكامل).

حدد S_NAME، S_EXPERIENCE من D_STAFF حيث S_EXPERIENCE

فرز نتيجة استعلام SQL حسب حقل واحد.

الخطوة 9. الفرز المعقد

من الضروري في كثير من الأحيان، وحتى دائمًا تقريبًا، فرز البيانات حسب أكثر من عمود وليس دائمًا بترتيب تصاعدي. يفترض بناء جملة SQL أنه بعد الكلمة الأساسية ORDER BY، يتم عرض قائمة الأعمدة مفصولة بفاصلة، بالإضافة إلى طريقة الفرز لكل عمود: بترتيب تصاعدي للقيم - ASC أو بترتيب تنازلي - DESC. في المثال أدناه، نعرض السجلات لجميع الموظفين بترتيب تنازلي لمدة خدمتهم. نقوم بفرز الموظفين الذين لديهم نفس مدة الخدمة بالترتيب الأبجدي.

حدد S_EXPERIENCE، S_NAME من D_STAFF ORDER BY S_EXPERIENCE DESC، S_NAME ASC


فرز نتيجة استعلام SQL بواسطة حقلين.

في كثير من الأحيان، يتم استخدام ترتيب الفرز العكسي مع أعمدة مثل [التاريخ]. إذا كان التاريخ يخزن، على سبيل المثال، تاريخ إدخال المعلومات، فعند الفرز العكسي، تظهر تلك السجلات التي تمت إضافتها مؤخرًا مقارنة بالباقي في بداية القائمة. إذا كان الاستعلام يسترد إعلانات الأخبار من قاعدة البيانات، فسنتلقى قائمة بالإعلانات مرتبة تنازليًا حسب أهميتها، وهو ما يمكن أن يكون مفيدًا للغاية، حيث تتم قراءة الإعلانات عادةً من الأعلى إلى الأسفل، ولا تظهر جميعها على مواقع الأخبار ، ولكن فقط عدد قليل من الأكثر "طازجة".




قمة