SQLجلب البيانات مع ترتيبها
- مفهوم ترتيب البيانات
- تجهيز قاعدة البيانات التي سنطبق عليها
- أمثلة حول ترتيب البيانات التي يتم جلبها
مفهوم ترتيب البيانات
في الدرس السابق, عند جلب عدد أسطر من الجدول كنا نلاحظ أننا كنا نسترجعها بنفس الترتيب الذي أدخلناها به.
في هذا الدرس سنتعلم كيف نقوم بترتيب السطور التي سيتم إرجاعها نسبةً للقيم الموضوعة في عمود محدد أو أكثر.
في SQL يمكنك ترتيب البيانات التي نجلبها بشكل تصاعدي ( Ascending ) أو تنازلي ( Descending ) سواء كنت تتعامل مع بيانات نصية أو رقمية. فمثلاً تستطيع ترتيب نتيجة الإستعلام نسبة لرواتب الموظفين من الأصغر إلى الأكبر, و ترتيب أسماء الموظفين بشكل أبجدي من الألف إلى الياء و هكذا.
لتحديد الطريقة التي سيتم فيها ترتيب البيانات التي نجلبها بواسطة الأمر SELECT نضع الكلمة ORDER BY في نهاية الإستعلام و نضع بعدها إسم العمود أو الأعمدة التي نريد ترتيب السطور على أساسها.
إفتراضياً الكلمة ORDER BY ترتب السطور بشكل تصاعدي. إذا أردت ترتيب السطور بشكل تنازلي يجب أن تضيف الكلمة DESC في النهاية.
الشكل العام لإستخدامه
- بعد الكلمة SELECT نضع أسماء الأعمدة التي سيتم إرجاع قيمها في الإستعلام.
- مكان الكلمة
table_name
نضع إسم الجدول الذي سنجلب البيانات منه. - بعد الكلمة ORDER BY نضع إسم العمود أو الأعمدة التي سيتم ترتيب السطور على أساسها.
- في النهاية نضع الكلمة DESC إذا أردنا ترتيب البيانات بشكل تنازلي و نضع ASC إذا أردنا ترتيب بشكل تصاعدي.
تجهيز قاعدة البيانات التي سنطبق عليها
قم بتنفيذ الإستعلام التالي حتى تنشئ قاعدة بيانات جديدة إسمها harmash
و تنشئ فيها جدول إسمه employees
يحتوي على بيانات 10 موظفين.
الإستعلام
بعد تنفيذ الإستعلام السابق في phpMyAdmin سيتم إنشاء قاعدة البيانات harmash
و إنشاء الجدول employees
بداخلها.
قم بالنقر على إسم قاعدة البيانات harmash
من القائمة اليسرى حتى تبدأ بالتعامل معها و تطبيق ما ستتعلمه في هذا الدرس.
البيانات التي قمنا بإضافتها بشكل إفتراضي في الجدول employees
.
id | first_name | last_name | is_married | salary | birthday |
---|---|---|---|---|---|
1 | Ahmad | Alhazem | 0 | 800.00 | 1990-10-23 |
2 | Rami | Algharib | 0 | 750.00 | 1992-05-08 |
3 | Said | Alnaja | 1 | 900.00 | 1988-07-12 |
4 | Noura | Jamali | 0 | 845.00 | 1994-12-04 |
5 | Amani | Sarrouf | 1 | 1000.00 | 1991-10-27 |
6 | Mhamad | Harmush | 0 | 700.00 | 1993-11-12 |
7 | Ahmad | Asaadi | 1 | 850.00 | 1995-03-10 |
8 | Mostafa | Shawki | 1 | 920.00 | 1990-02-14 |
9 | Jana | Alkassem | 0 | 780.00 | 1991-08-12 |
10 | Houssam | Zahrani | 1 | 880.00 | 1985-09-20 |
أمثلة حول ترتيب البيانات التي يتم جلبها
المثال الأول
الإستعلام التالي يجلب كل معلومات الموظفين مع ترتيب الأسطر بشكل تصاعدي نسبةً لرواتب الموظفين.
أي سيتم عرض الموظف الذي ينال الراتب الأدنى في الأول, و الموظف الذي ينال الراتب الأعلى في الأخير.
الإستعلام
يمكن كتابة وضع الكلمة ASC في نهاية الإستعلام و لكن لا داعي لذلك لأنه إفتراضياً سيتم ترتيبهم بشكل تصاعدي.
سنحصل على النتيجة التالية عند تنفيذ الإستعلام.
نلاحظ أنه تم ترتيب جميع الأسطر بشكل تصاعدي بناءاً على القيم الموضوعة في العمود salary
.
id | first_name | last_name | is_married | salary | birthday |
---|---|---|---|---|---|
6 | Mhamad | Harmush | 0 | 700.00 | 1993-11-12 |
2 | Rami | Algharib | 0 | 750.00 | 1992-05-08 |
9 | Jana | Alkassem | 0 | 780.00 | 1991-08-12 |
1 | Ahmad | Alhazem | 0 | 800.00 | 1990-10-23 |
4 | Noura | Jamali | 0 | 845.00 | 1994-12-04 |
7 | Ahmad | Asaadi | 1 | 850.00 | 1995-03-10 |
10 | Houssam | Zahrani | 1 | 880.00 | 1985-09-20 |
3 | Said | Alnaja | 1 | 900.00 | 1988-07-12 |
8 | Mostafa | Shawki | 1 | 920.00 | 1990-02-14 |
5 | Amani | Sarrouf | 1 | 1000.00 | 1991-10-27 |
المثال الثاني
الإستعلام التالي يجلب كل معلومات الموظفين مع ترتيب الأسطر بشكل تنازلي نسبةً لرواتب الموظفين.
أي سيتم عرض الموظف الذي ينال الراتب الأعلى في الأول, و الموظف الذي ينال الراتب الأدنى في الأخير.
الإستعلام
سنحصل على النتيجة التالية عند تنفيذ الإستعلام.
نلاحظ أنه تم ترتيب جميع الأسطر بشكل تنازلي بناءاً على القيم الموضوعة في العمود salary
.
id | first_name | last_name | is_married | salary | birthday |
---|---|---|---|---|---|
5 | Amani | Sarrouf | 1 | 1000.00 | 1991-10-27 |
8 | Mostafa | Shawki | 1 | 920.00 | 1990-02-14 |
3 | Said | Alnaja | 1 | 900.00 | 1988-07-12 |
10 | Houssam | Zahrani | 1 | 880.00 | 1985-09-20 |
7 | Ahmad | Asaadi | 1 | 850.00 | 1995-03-10 |
4 | Noura | Jamali | 0 | 845.00 | 1994-12-04 |
1 | Ahmad | Alhazem | 0 | 800.00 | 1990-10-23 |
9 | Jana | Alkassem | 0 | 780.00 | 1991-08-12 |
2 | Rami | Algharib | 0 | 750.00 | 1992-05-08 |
6 | Mhamad | Harmush | 0 | 700.00 | 1993-11-12 |
المثال الثالث
الإستعلام التالي يجلب كل معلومات الموظفين مع ترتيب الأسطر بشكل تصاعدي نسبةً لتاريخ ميلاد الموظفين.
أي سيتم عرض الموظف الأكبر سناً في الأول, و الموظف الأصغر سناً في الأخير.
الإستعلام
سنحصل على النتيجة التالية عند تنفيذ الإستعلام.
نلاحظ أنه تم ترتيب جميع الأسطر بشكل تصاعدي بناءاً على القيم الموضوعة في العمود birthday
.
id | first_name | last_name | is_married | salary | birthday |
---|---|---|---|---|---|
10 | Houssam | Zahrani | 1 | 880.00 | 1985-09-20 |
3 | Said | Alnaja | 1 | 900.00 | 1988-07-12 |
8 | Mostafa | Shawki | 1 | 920.00 | 1990-02-14 |
1 | Ahmad | Alhazem | 0 | 800.00 | 1990-10-23 |
9 | Jana | Alkassem | 0 | 780.00 | 1991-08-12 |
5 | Amani | Sarrouf | 1 | 1000.00 | 1991-10-27 |
2 | Rami | Algharib | 0 | 750.00 | 1992-05-08 |
6 | Mhamad | Harmush | 0 | 700.00 | 1993-11-12 |
4 | Noura | Jamali | 0 | 845.00 | 1994-12-04 |
7 | Ahmad | Asaadi | 1 | 850.00 | 1995-03-10 |
المثال الرابع
الإستعلام التالي يجلب كل معلومات الموظفين مع ترتيب الأسطر بشكل تصاعدي نسبةً لإسم لأسماء الموظفين.
أي سيتم عرض الموظف على حسب الترتيب الأبجدي لأحرف أسمائهم.
الإستعلام
سنحصل على النتيجة التالية عند تنفيذ الإستعلام.
نلاحظ أنه تم ترتيب جميع الأسطر بشكل تصاعدي بناءاً على القيم الموضوعة في العمود first_name
.
id | first_name | last_name | is_married | salary | birthday |
---|---|---|---|---|---|
1 | Ahmad | Alhazem | 0 | 800.00 | 1990-10-23 |
7 | Ahmad | Asaadi | 1 | 850.00 | 1995-03-10 |
5 | Amani | Sarrouf | 1 | 1000.00 | 1991-10-27 |
10 | Houssam | Zahrani | 1 | 880.00 | 1985-09-20 |
9 | Jana | Alkassem | 0 | 780.00 | 1991-08-12 |
6 | Mhamad | Harmush | 0 | 700.00 | 1993-11-12 |
8 | Mostafa | Shawki | 1 | 920.00 | 1990-02-14 |
4 | Noura | Jamali | 0 | 845.00 | 1994-12-04 |
2 | Rami | Algharib | 0 | 750.00 | 1992-05-08 |
3 | Said | Alnaja | 1 | 900.00 | 1988-07-12 |
المثال الخامس
الإستعلام التالي يجلب كل معلومات الموظفين مع ترتيب الأسطر بشكل تصاعدي نسبةً لإسم الحالة الإجتماعية أولاً (متزوج أم لا) بعدها يتم ترتيبهم من جديد نسبة لراتبهم من الأعلى إلى الأدنى.
أي سيتم عرض الموظف على حسب قيم العمود is_married
بشكل تصاعدي و من ثم قيم العمود salary
بشكل تنازلي.
الإستعلام
سنحصل على النتيجة التالية عند تنفيذ الإستعلام.
نلاحظ أنه تم ترتيب جميع الأسطر بشكل تصاعدي بناءاً على القيم الموضوعة في العمود is_married
بشكل تصاعدي أولاً.
بعدها تم ترتيب القيم الموضوعة في العمود salary
بشكل تنازلي و لكن تم ترتيبها بداخل كل قسم يملك نفس قيمة is_married
على حدا.
id | first_name | last_name | is_married | salary | birthday |
---|---|---|---|---|---|
4 | Noura | Jamali | 0 | 845.00 | 1994-12-04 |
1 | Ahmad | Alhazem | 0 | 800.00 | 1990-10-23 |
9 | Jana | Alkassem | 0 | 780.00 | 1991-08-12 |
2 | Rami | Algharib | 0 | 750.00 | 1992-05-08 |
6 | Mhamad | Harmush | 0 | 700.00 | 1993-11-12 |
5 | Amani | Sarrouf | 1 | 1000.00 | 1991-10-27 |
3 | Said | Alnaja | 1 | 900.00 | 1988-07-12 |
8 | Mostafa | Shawki | 1 | 920.00 | 1990-02-14 |
10 | Houssam | Zahrani | 1 | 880.00 | 1985-09-20 |
7 | Ahmad | Asaadi | 1 | 850.00 | 1995-03-10 |
المثال السادس
الإستعلام التالي يجلب كل معلومات الموظفين مع ترتيب الأسطر بشكل تصاعدي نسبةً للنص الذي ينتج عن دمج الحقلين first_name
و last_name
.
أي سيتم عرض إسم الموظف و إسم عائلته في حقل واحد و على أساسه سيتم ترتيب الأسطر.
الإستعلام
سنحصل على النتيجة التالية عند تنفيذ الإستعلام.
نلاحظ أنه تم ترتيب جميع الأسطر بشكل تصاعدي بناءاً على القيم الموضوعة في العمود Full Name
.
id | Full Name | salary |
---|---|---|
1 | Ahmad Alhazem | 800.00 |
7 | Ahmad Asaadi | 850.00 |
5 | Amani Sarrouf | 1000.00 |
10 | Houssam Zahrani | 880.00 |
9 | Jana Alkassem | 780.00 |
6 | Mhamad Harmush | 700.00 |
8 | Mostafa Shawki | 920.00 |
4 | Noura Jamali | 845.00 |
2 | Rami Algharib | 750.00 |
3 | Said Alnaja | 900.00 |