الدرس 2 من 10

ترتيب النتائج

هدف الدرس

الترتيب بـ ORDER BY وتحديد العدد بـ LIMIT

01

الشرح

لا تضمن قاعدة البيانات ترتيب الصفوف، فما يظهر أولًا اليوم قد يظهر متأخرًا غدًا، ولذلك إن أردت ترتيبًا معيّنًا فاطلبه صراحةً، فـORDER BY price DESC يرتّب من الأكبر إلى الأصغر، وASC يرتّب من الأصغر إلى الأكبر، وهو الترتيب الافتراضي إن لم تذكر شيئًا.

ويأخذ LIMIT 3 أول ثلاثة صفوف بعد الترتيب، فإذا رتّبت بالسعر من الأغلى أعطاك أغلى ثلاثة منتجات، أمّا من دون ORDER BY فيعطيك أيّ ثلاثة صفوف.

وإذا كتبت عمودين في ORDER BY رتّبت قاعدة البيانات الصفوف بالعمود الأول، فإن تساوت فيه رتّبتها بالثاني. واتجاه الترتيب يخصّ العمود الذي كُتب بعده فقط، فالأمر ORDER BY category, price DESC يرتّب الفئات تصاعديًّا، ويرتّب الأسعار داخل كل فئة تنازليًّا.

02

المطلوب

اعرض name وprice لأغلى ثلاثة منتجات، وإن تساوى سعران فقدّم الاسم الأسبق في الترتيب الأبجدي.

الفحوص

5 فحوص
  1. العمودان name وprice
  2. ثلاثة صفوف فقط
  3. مرتّبة من الأغلى
  4. المنتجات هي الأغلى فعلًا
  5. الاسم يحسم تساوي السعرين
الجداول المتاحة في هذا الدرس
CREATE TABLE products (
  id       INTEGER PRIMARY KEY,
  name     TEXT    NOT NULL,
  category TEXT    NOT NULL,
  price    INTEGER NOT NULL,
  stock    INTEGER NOT NULL
);

INSERT INTO products (name, category, price, stock) VALUES
  ('شاشة 27 بوصة',  'تقنية',   899,   4),
  ('سماعة لاسلكية', 'تقنية',   249,  12),
  ('لوحة مفاتيح',   'تقنية',   189,   0),
  ('شاحن سريع',     'تقنية',    79,  40),
  ('كرسي مكتب',     'منزل',    649,   3),
  ('رف كتب',        'منزل',    249,   7),
  ('مصباح مكتب',    'منزل',    100,  18),
  ('حقيبة ظهر',     'قرطاسية', 180,  22),
  ('دفتر ملاحظات',  'قرطاسية',  15, 200),
  ('أقلام ملونة',   'قرطاسية',  25,   0),
  ('قاموس عربي',    'كتب',      95,  10),
  ('رواية',         'كتب',      45,  30);
03

تلميحات

0/3
query.sql
المخرجاتSQLite (sql.js)

نحمّل بيئة SQLite الآن.

–/5

يبدأ الفحص حين تجهز البيئة.

تجد 5 فحوص في بطاقة «المطلوب».