Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

SQLتحديد عدد الأسطر الأقصى التي يمكن أن يتم جلبها

  • مفهوم تحديد عدد الأسطر التي سيتم إرجاعها
  • تجهيز قاعدة البيانات التي سنطبق عليها
  • أمثلة حول ترتيب البيانات التي يتم جلبها

مفهوم تحديد عدد الأسطر التي سيتم إرجاعها

عند جلب بيانات سواء ضمن شروط أو بدون أي شروط فإن النتيجة التي ستحصل عليها قد تكون كبيرة جداً بمعنى أنها قد تحتوي على عدد كبير من الأسطر و التي قد لا تحتاجها أصلاً لأنه يكفيك أن تحصل على جزء منها.

في هذا الدرس ستتعلم كيف تحدد عدد الأسطر الأقصى التي قد يرجعها الإستعلام و ستعرف كيف يمكن الإستفادة من هذا الأمر خاصةً مع البيانات الرقمية.

الآن و قبل أن نبدأ, إليك بعض النماذج لأهمية تحديد عدد الأسطر في المشاريع.


السيناريو الأول

في حال أردت جلب بيانات المستخدمين المخزنة في موقع فيسبوك فأنت بذلك ستجلب أكثر من مليار سطر في إستعلام واحد.

جلب هذا العدد من البيانات في وقت واحد أمر مستحيل لأنه يتطلب وقت كبير جداً و مساحة كبيرة لإستيعابه و لهذا يتم تجزئته و إرساله على دفعات. فمثلاً بدلاً من أن تطلب معلومات المليار شخص دفعة واحدة, تجدهم يسمحوا لك بالحصول على معلومات 20 مستخدم على سبيل المثال كلما حاولت عرض المزيد من النتائج.

هذا الأمر يتم تطبيقه في كل المشاريع الأخرى و في أماكن عديدة في المشروع الواحد, فمثلاً موقع يوتيوب تجده يعرض لك أيضاً كمية محددة من الفيديوهات في كل صفحة, و تجده يعرض لك كيمة محددة من التعيلقات تحت كل فيديو مع إمكانية عرض المزيد من التعليقات كلما أردت ذلك.
لا تظن أن هذا الأمر مقتصر فقط على مواقع التواصل الإجتماعي بل حتى في المواقع العادية فمثلاً في قسم مقالات هرمش أيضاً نعرض كمية محددة من المقالات و كمية محددة من التعليقات و ليس كل المقالات أو التعليقات الموضوعة تحت أي مقال دفعة واحدة.


السيناريو الثاني

في حال أراد مدير شركة إرسال 5 موظفين في شركته إلى مهمة تطلب منهم السفر خارج البلاد لعدة أيام أو أشهر.
هنا قد تجد أن المدير سيقرر من يختار من موظفينه لعدة عوامل مثل عمر الموظف المناسب للمهمة, هل يجب أن يكون إمرأة أو رجل أو لا يهم, هل هذا الشخص متزوج أم لا, منصب الشخص في الشركة, شهادة الموظف العلمية, سنوات الخبرة التي يملكها الموظف إلخ..
بعد أن قام المدير بوضع معاير التي يجب أن تتوفر في الموظفين قد يجد 40 شخص تتوفر فيهم هذه المواصفات.
بما أن المدير يحتاج 5 موظفين فقط لهذه المهمة فإنه يحتاج معرفة أول 5 موظفين تتوفر فيهم هذه المعايير حتى يتواصل معهم و يعينهم للمهمة.


معلومة تقنية

عملية إرجاع كمية محددة من الأسطر الموجودة في الجدول تسمى Pagination أو Paging.
إذاً أي موقع تجده على سبيل المثال يعرض لك 10 مقالات مختلفة في كل صفحة, أو معلومات 20 مستخدم مختلف في كل صفحة إلخ.. يطبق ما يسمى Pagination.


تحديد عدد الأسطر الأقصى التي يمكن أن ترجع

لتحديد عدد الأسطر الأقصى التي يمكن أن يرجعها الإستعلام في قواعد بيانات MySQL و SQLite نستخدم الكلمة LIMIT كالتالي.

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT [offset,] row_count;
SELECT column_name(s) FROM table_name WHERE condition LIMIT [offset,] row_count;

  • بعد الكلمة SELECT نضع أسماء الأعمدة التي سيتم إرجاع قيمها في الإستعلام.
  • مكان الكلمة table_name نضع إسم الجدول الذي سنجلب البيانات منه.
  • بعد الكلمة WHERE يمكنك وضع شرط أو أكثر على الأسطر التي تريد أن يتم جلبها.
  • في النهاية نضع الكلمة LIMIT و من بعدها نضع رقم أو رقمين لتحديد عدد الأسطر التي سترجع.

بالنسبة للأرقام التي نضعها بعد الكلمة LIMIT:

  • في حال قمت بتمرير رقم واحد فقط مثل LIMIT 5, سيتم إعتبار أنك تريد إرجاع 5 أسطر كحد أقصى.
  • في حال قمت بتمرير رقمين مثل LIMIT 2,5, سيتم إعتبار أنك تريد إرجاع 5 أسطر كحد أقصى مع الإشارة إلى أنك ستبدأ من السطر رقم 2 من النتيجة التي تم إرجاعها.

إنتبه جيداً, النتيجة التي ترجع يتم إعتبار أول سطر فيها رقمه 0, السطر الثاني الذي يرجع فيها رقمه 1, السطر الثالث الذي يرجع فيها رقمه 2 و هكذا..
إذا كتبت LIMIT 2,5 تعني أنك تريد إرجاع 5 أسطر كحد أقصى إبتداءاً من السطر الثالث في النتيجة.


إختلاف الأوامر بين قواعد البيانات

نود الإشارة إلى أن تحديد عدد الأسطر موجود في كل قواعد البيانات و لكن قد تجد أنهم يستخدموا كلمات أخرى بدلاً من الكلمة LIMIT و إليك بعض الأمثلة:

في قواعد بيانات Access و SQL Server نستخدم الكلمة TOP كالتالي.

SELECT TOP row_count column_name(s)
FROM table_name
WHERE condition;
SELECT TOP row_count column_name(s) FROM table_name WHERE condition;

في قواعد بيانات ORACLE نستخدم الكلمة ROWNUM كالتالي.

SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= row_count;
SELECT column_name(s) FROM table_name WHERE ROWNUM <= row_count;

في النهاية, مهما كان نوع قاعدة البيانات التي ستتعامل معها, فكرة تحديد عدد الأسطر التي سيرجعها الإستعلام هي نفسها تماماً.

تجهيز قاعدة البيانات التي سنطبق عليها

قم بتنفيذ الإستعلام التالي حتى تنشئ قاعدة بيانات جديدة إسمها harmash و تنشئ فيها جدول إسمه employees يحتوي على بيانات 10 موظفين.

الإستعلام

-- سيتم حذفها harmash في حال كان يوجد بالأساس قاعدة بيانات إسمها
DROP DATABASE IF EXISTS harmash;
-- harmash هنا قمنا بإنشاء قاعدة بيانات جديدة إسمها
CREATE DATABASE harmash;
-- harmash هنا قمنا بتحديد أن أي إستعلام جديد سيتم تنفيذه على قاعدة البيانات
USE harmash;
-- يتألف من 6 أعمدة employees هنا قمنا بإنشاء جدول جديد إسمه
-- لأننا قمنا بتحديدها قبل إستدعاء هذا الأمر harmash سيتم إنشاء هذا الجدول بداخل قاعدة البيانات
CREATE TABLE employees (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
first_name VARCHAR(50),
last_name VARCHAR(20),
is_married BOOLEAN,
salary DECIMAL(7,2),
birthday Date
);
-- هنا قمنا بإضافة 10 أسطر في الجدول, أي أضفنا معلومات 10 موظفين
-- لاحظ أننا لم نحدد أسماء الأعمدة التي سنضع فيها البيانات لأننا قمنا بملئ جميع المعلومات
-- في البداية هو حتى يكون عدد القيم الموضوعة يساوي عدد أعمدة الجدول null سبب وضع الكلمة
-- ستقوم قاعدة البيانات بوضع رقم تعرفة مختلف لكل سطر null مكان الكلمة
INSERT INTO employees VALUES (null, "Ahmad", "Alhazem", false, 800, "1990-10-23");
INSERT INTO employees VALUES (null, "Rami", "Algharib", false, 750, "1992-05-08");
INSERT INTO employees VALUES (null, "Said", "Alnaja", true, 900, "1988-07-12");
INSERT INTO employees VALUES (null, "Noura", "Jamali", false, 845, "1994-12-04");
INSERT INTO employees VALUES (null, "Amani", "Sarrouf", true, 1000, "1991-10-27");
INSERT INTO employees VALUES (null, "Mhamad", "Harmush", false, 700, "1993-11-12");
INSERT INTO employees VALUES (null, "Ahmad", "Asaadi", true, 850, "1995-03-10");
INSERT INTO employees VALUES (null, "Mostafa", "Shawki", true, 920, "1990-02-14");
INSERT INTO employees VALUES (null, "Jana", "Alkassem", false, 780, "1991-08-12");
INSERT INTO employees VALUES (null, "Houssam", "Zahrani", true, 880, "1985-09-20");
-- سيتم حذفها harmash في حال كان يوجد بالأساس قاعدة بيانات إسمها DROP DATABASE IF EXISTS harmash; -- harmash هنا قمنا بإنشاء قاعدة بيانات جديدة إسمها CREATE DATABASE harmash; -- harmash هنا قمنا بتحديد أن أي إستعلام جديد سيتم تنفيذه على قاعدة البيانات USE harmash; -- يتألف من 6 أعمدة employees هنا قمنا بإنشاء جدول جديد إسمه -- لأننا قمنا بتحديدها قبل إستدعاء هذا الأمر harmash سيتم إنشاء هذا الجدول بداخل قاعدة البيانات CREATE TABLE employees ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(50), last_name VARCHAR(20), is_married BOOLEAN, salary DECIMAL(7,2), birthday Date ); -- هنا قمنا بإضافة 10 أسطر في الجدول, أي أضفنا معلومات 10 موظفين -- لاحظ أننا لم نحدد أسماء الأعمدة التي سنضع فيها البيانات لأننا قمنا بملئ جميع المعلومات -- في البداية هو حتى يكون عدد القيم الموضوعة يساوي عدد أعمدة الجدول null سبب وضع الكلمة -- ستقوم قاعدة البيانات بوضع رقم تعرفة مختلف لكل سطر null مكان الكلمة INSERT INTO employees VALUES (null, "Ahmad", "Alhazem", false, 800, "1990-10-23"); INSERT INTO employees VALUES (null, "Rami", "Algharib", false, 750, "1992-05-08"); INSERT INTO employees VALUES (null, "Said", "Alnaja", true, 900, "1988-07-12"); INSERT INTO employees VALUES (null, "Noura", "Jamali", false, 845, "1994-12-04"); INSERT INTO employees VALUES (null, "Amani", "Sarrouf", true, 1000, "1991-10-27"); INSERT INTO employees VALUES (null, "Mhamad", "Harmush", false, 700, "1993-11-12"); INSERT INTO employees VALUES (null, "Ahmad", "Asaadi", true, 850, "1995-03-10"); INSERT INTO employees VALUES (null, "Mostafa", "Shawki", true, 920, "1990-02-14"); INSERT INTO employees VALUES (null, "Jana", "Alkassem", false, 780, "1991-08-12"); INSERT INTO employees VALUES (null, "Houssam", "Zahrani", true, 880, "1985-09-20");

بعد تنفيذ الإستعلام السابق في 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

أمثلة حول ترتيب البيانات التي يتم جلبها


المثال الأول

الإستعلام التالي يجلب معلومات أول ثلاثة موظفين في الجدول.

الإستعلام

SELECT * FROM employees -- employees أحضر جميع المعلومات المتوفرة في الجدول
LIMIT 3; -- أحضر أول ثلاث أسطر تم إيجادها في الجدول
SELECT * FROM employees -- employees أحضر جميع المعلومات المتوفرة في الجدول LIMIT 3; -- أحضر أول ثلاث أسطر تم إيجادها في الجدول

في حال أردت وضع رقمين بعد الكلمة LIMIT يمكنك تعديل الإستعلام كالتالي و الحصول على نفس النتيجة.

SELECT * FROM employees -- employees أحضر جميع المعلومات المتوفرة في الجدول
LIMIT 0,3; -- إبتداءاً من السطر رقم 0 و الذي هو نفسه السطر الأول أحضر أول 3 أسطر تم إيجادها في الجدول
SELECT * FROM employees -- employees أحضر جميع المعلومات المتوفرة في الجدول LIMIT 0,3; -- إبتداءاً من السطر رقم 0 و الذي هو نفسه السطر الأول أحضر أول 3 أسطر تم إيجادها في الجدول

سنحصل على النتيجة التالية عند تنفيذ الإستعلام.

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


المثال الثاني

الإستعلام التالي يجلب معلومات أول ثلاثة موظفين ولدوا عام 1990 أو بعده.

الإستعلام

SELECT * FROM employees -- employees أحضر جميع المعلومات المتوفرة في الجدول
WHERE birthday >= '1990-01-01' -- '1990-01-01' في السطر يملك تاريخ أكبر أو يساوي birthday بشرط أن يكون الحقل
LIMIT 3; -- أحضر أول ثلاث أسطر تم إيجادها في الجدول
SELECT * FROM employees -- employees أحضر جميع المعلومات المتوفرة في الجدول WHERE birthday >= '1990-01-01' -- '1990-01-01' في السطر يملك تاريخ أكبر أو يساوي birthday بشرط أن يكون الحقل LIMIT 3; -- أحضر أول ثلاث أسطر تم إيجادها في الجدول

في حال أردت وضع رقمين بعد الكلمة LIMIT يمكنك تعديل الإستعلام كالتالي و الحصول على نفس النتيجة.

SELECT * FROM employees -- employees أحضر جميع المعلومات المتوفرة في الجدول
WHERE birthday >= '1990-01-01' -- '1990-01-01' في السطر يملك تاريخ أكبر أو يساوي birthday بشرط أن يكون الحقل
LIMIT 0,3; -- إبتداءاً من السطر رقم 0 و الذي هو نفسه السطر الأول أحضر أول 3 أسطر تم إيجادها في الجدول
SELECT * FROM employees -- employees أحضر جميع المعلومات المتوفرة في الجدول WHERE birthday >= '1990-01-01' -- '1990-01-01' في السطر يملك تاريخ أكبر أو يساوي birthday بشرط أن يكون الحقل LIMIT 0,3; -- إبتداءاً من السطر رقم 0 و الذي هو نفسه السطر الأول أحضر أول 3 أسطر تم إيجادها في الجدول

سنحصل على النتيجة التالية عند تنفيذ الإستعلام.

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
4 Noura Jamali 0 845.00 1994-12-04


المثال الثالث

الإستعلام التالي يحضر أعلى راتب يتم إعطاؤه للموظف في الشركة.
الحيلة التي سنفعلها هنا للحصول على أعلى راتب هي ترتيب أسطر الجدول بشكل تنازلي ( أي من الأكبر إلى الأصغر ) على أساس الراتب و من ثم نعرض الراتب الموضوع في أول سطر لأنه حينها سيكون هو أعلى راتب في العمود كله.
ملاحظة: في هذا المثال بالتحديد كان بإمكان استخدام دالة إسمها MAX() للحصول على أعلى قيمة و لكن لا تشغل بالك بها لأنها ستمر معك لاحقاً في الدورة.

الإستعلام

SELECT salary AS 'Highest Salary' -- و قمنا بإعطاء إسم للعمود salary هنا قمنا بتحديد أننا نريد قيم العامود
FROM employees -- employees هنا قمنا بتحديد أن نريد إحضار القيم من الجدول
ORDER BY salary DESC -- فقط من الأكبر إلى الأصغر salary هنا قمنا بترتيب قيم الجدول الذي سيرجع و الذي يتألف من العامود
LIMIT 1; -- هنا قمنا بتحديد أننا نريد السطر الأول فقط الذي يرجعه هذا الإستعلام, أي القيمة الأولى التي سيتم إرجاعها
SELECT salary AS 'Highest Salary' -- و قمنا بإعطاء إسم للعمود salary هنا قمنا بتحديد أننا نريد قيم العامود FROM employees -- employees هنا قمنا بتحديد أن نريد إحضار القيم من الجدول ORDER BY salary DESC -- فقط من الأكبر إلى الأصغر salary هنا قمنا بترتيب قيم الجدول الذي سيرجع و الذي يتألف من العامود LIMIT 1; -- هنا قمنا بتحديد أننا نريد السطر الأول فقط الذي يرجعه هذا الإستعلام, أي القيمة الأولى التي سيتم إرجاعها

في حال أردت وضع رقمين بعد الكلمة LIMIT يمكنك تعديل الإستعلام كالتالي و الحصول على نفس النتيجة.

SELECT salary AS 'Highest Salary' -- و قمنا بإعطاء إسم للعمود salary هنا قمنا بتحديد أننا نريد قيم العامود
FROM employees -- employees هنا قمنا بتحديد أن نريد إحضار القيم من الجدول
ORDER BY salary DESC -- فقط من الأكبر إلى الأصغر salary هنا قمنا بترتيب قيم الجدول الذي سيرجع و الذي يتألف من العامود
LIMIT 0,1; -- هنا قمنا بتحديد أننا نريد السطر الأول فقط الذي يرجعه هذا الإستعلام, أي القيمة الأولى التي سيتم إرجاعها
SELECT salary AS 'Highest Salary' -- و قمنا بإعطاء إسم للعمود salary هنا قمنا بتحديد أننا نريد قيم العامود FROM employees -- employees هنا قمنا بتحديد أن نريد إحضار القيم من الجدول ORDER BY salary DESC -- فقط من الأكبر إلى الأصغر salary هنا قمنا بترتيب قيم الجدول الذي سيرجع و الذي يتألف من العامود LIMIT 0,1; -- هنا قمنا بتحديد أننا نريد السطر الأول فقط الذي يرجعه هذا الإستعلام, أي القيمة الأولى التي سيتم إرجاعها

سنحصل على النتيجة التالية عند تنفيذ الإستعلام.

Highest Salary
1000.00


المثال الرابع

الإستعلام التالي يحضر أدنى راتب يتم إعطاؤه للموظف في الشركة.
الحيلة التي سنفعلها هنا للحصول على أدنى راتب هي ترتيب أسطر الجدول بشكل تصاعدي ( أي من الأصغر إلى الأكبر ) على أساس الراتب و من ثم نعرض الراتب الموضوع في أول سطر لأنه حينها سيكون هو أدنى راتب في العمود كله.
ملاحظة: في هذا المثال بالتحديد كان بإمكان استخدام دالة إسمها MIN() للحصول على أدنى قيمة و لكن لا تشغل بالك بها لأنها ستمر معك لاحقاً في الدورة.

الإستعلام

SELECT salary AS 'Lowest Salary' -- و قمنا بإعطاء إسم للعمود salary هنا قمنا بتحديد أننا نريد قيم العامود
FROM employees -- employees هنا قمنا بتحديد أن نريد إحضار القيم من الجدول
ORDER BY salary -- فقط من الأصغر إلى الأكبر salary هنا قمنا بترتيب قيم الجدول الذي سيرجع و الذي يتألف من العامود
LIMIT 1; -- هنا قمنا بتحديد أننا نريد السطر الأول فقط الذي يرجعه هذا الإستعلام, أي القيمة الأولى التي سيتم إرجاعها
SELECT salary AS 'Lowest Salary' -- و قمنا بإعطاء إسم للعمود salary هنا قمنا بتحديد أننا نريد قيم العامود FROM employees -- employees هنا قمنا بتحديد أن نريد إحضار القيم من الجدول ORDER BY salary -- فقط من الأصغر إلى الأكبر salary هنا قمنا بترتيب قيم الجدول الذي سيرجع و الذي يتألف من العامود LIMIT 1; -- هنا قمنا بتحديد أننا نريد السطر الأول فقط الذي يرجعه هذا الإستعلام, أي القيمة الأولى التي سيتم إرجاعها

في حال أردت وضع رقمين بعد الكلمة LIMIT يمكنك تعديل الإستعلام كالتالي و الحصول على نفس النتيجة.

SELECT salary AS 'Lowest Salary' -- و قمنا بإعطاء إسم للعمود salary هنا قمنا بتحديد أننا نريد قيم العامود
FROM employees -- employees هنا قمنا بتحديد أن نريد إحضار القيم من الجدول
ORDER BY salary -- فقط من الأصغر إلى الأكبر salary هنا قمنا بترتيب قيم الجدول الذي سيرجع و الذي يتألف من العامود
LIMIT 0,1; -- هنا قمنا بتحديد أننا نريد السطر الأول فقط الذي يرجعه هذا الإستعلام, أي القيمة الأولى التي سيتم إرجاعها
SELECT salary AS 'Lowest Salary' -- و قمنا بإعطاء إسم للعمود salary هنا قمنا بتحديد أننا نريد قيم العامود FROM employees -- employees هنا قمنا بتحديد أن نريد إحضار القيم من الجدول ORDER BY salary -- فقط من الأصغر إلى الأكبر salary هنا قمنا بترتيب قيم الجدول الذي سيرجع و الذي يتألف من العامود LIMIT 0,1; -- هنا قمنا بتحديد أننا نريد السطر الأول فقط الذي يرجعه هذا الإستعلام, أي القيمة الأولى التي سيتم إرجاعها

سنحصل على النتيجة التالية عند تنفيذ الإستعلام.

Lowest Salary
700.00


المثال الخامس

الإستعلام التالي يحضر ثاني أعلى راتب يتم إعطاؤه للموظف في الشركة.
الحيلة التي سنفعلها هنا للحصول على ثاني أعلى راتب هي ترتيب أسطر الجدول بشكل تنازلي ( أي من الأكبر إلى الأصغر ) على أساس الراتب مع التأكد من أنه لا يوجد أي قيم مكررة في النتيجة و من ثم نعرض الراتب الموضوع في ثاني سطر لأنه حينها سيكون هو ثاني أعلى راتب في العمود كله.

الإستعلام

SELECT DISTINCT salary AS 'Second Highest Salary' -- بدون وجود أي قيم مكررة و قمنا بإعطاء إسم للعمود salary هنا قمنا بتحديد أننا نريد قيم العامود
FROM employees -- employees هنا قمنا بتحديد أن نريد إحضار القيم من الجدول
ORDER BY salary DESC -- فقط من الأكبر إلى الأصغر salary هنا قمنا بترتيب قيم الجدول الذي سيرجع و الذي يتألف من العامود
LIMIT 1,1; -- إبتداءاً من السطر رقم 0 و الذي هو نفسه السطر الأول أحضر أول سطر تم إيجاده في الجدول
SELECT DISTINCT salary AS 'Second Highest Salary' -- بدون وجود أي قيم مكررة و قمنا بإعطاء إسم للعمود salary هنا قمنا بتحديد أننا نريد قيم العامود FROM employees -- employees هنا قمنا بتحديد أن نريد إحضار القيم من الجدول ORDER BY salary DESC -- فقط من الأكبر إلى الأصغر salary هنا قمنا بترتيب قيم الجدول الذي سيرجع و الذي يتألف من العامود LIMIT 1,1; -- إبتداءاً من السطر رقم 0 و الذي هو نفسه السطر الأول أحضر أول سطر تم إيجاده في الجدول

سنحصل على النتيجة التالية عند تنفيذ الإستعلام.

Second Highest Salary
920.00


المثال السادس

في حال أردت عرض أول أعلى ثلاث رواتب يمكنك وضع الإستعلامات التي كتبتها في الأمثلة السابقة نفسها بشكل متداخل و من ثم تجميعها بداخل أمر SELECT و هذا الأسلوب يسمى Sub Queries.

ملاحظة: لا تشغل بالك إطلاقاً بطريقة كتابة هذا الإستعلام لأنك ستتعلمه لاحقاً في الدورة و لكننا نريك المزيد من الإستخدامات للكلمة LIMIT ليس إلا.

الإستعلام

-- الخارجي سيجلب كل الإستعلامات التي وضعناها بداخله و كل جدول يرجعوه سيتم وضعه كعمود فيه SELECT الأمر
SELECT
-- الإستعلام التالي يمثل أول عمود و القيمة التي ستوضع فيه
(SELECT salary FROM employees ORDER BY salary DESC LIMIT 0,1) AS 'First Highest Salary',
-- الإستعلام التالي يمثل ثاني عمود و القيمة التي ستوضع فيه
(SELECT DISTINCT salary FROM employees ORDER BY salary DESC LIMIT 1,1) AS 'Second Highest Salary',
-- الإستعلام التالي يمثل ثالث عمود و القيمة التي ستوضع فيه
(SELECT DISTINCT salary FROM employees ORDER BY salary DESC LIMIT 2,1) AS 'Third Highest Salary';
-- الخارجي سيجلب كل الإستعلامات التي وضعناها بداخله و كل جدول يرجعوه سيتم وضعه كعمود فيه SELECT الأمر SELECT -- الإستعلام التالي يمثل أول عمود و القيمة التي ستوضع فيه (SELECT salary FROM employees ORDER BY salary DESC LIMIT 0,1) AS 'First Highest Salary', -- الإستعلام التالي يمثل ثاني عمود و القيمة التي ستوضع فيه (SELECT DISTINCT salary FROM employees ORDER BY salary DESC LIMIT 1,1) AS 'Second Highest Salary', -- الإستعلام التالي يمثل ثالث عمود و القيمة التي ستوضع فيه (SELECT DISTINCT salary FROM employees ORDER BY salary DESC LIMIT 2,1) AS 'Third Highest Salary';

سنحصل على النتيجة التالية عند تنفيذ الإستعلام.

First Highest Salary Second Highest Salary Third Highest Salary
1000.00 920.00 900.00

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة